Что представляет собой дорогостоящий метод или ресурс?

голоса
1

Он упоминается довольно часто, что исключения являются дорогостоящими, а также различные методы в .NET являются дорогостоящими, тоже.

Что именно представляет собой дорогостоящий метод в .NET?

Это время, необходимое для способа обработки? EG я получил поток ответа веб-страницы, используя объект WebClient (это не асинхронной), и при получении ответа и присваиваем его переменной, потребовалось некоторое время, чтобы пройти через эту строку кода. Может быть, потому, что сама веб-страница была насыщенной графикой и большим. Чтобы увидеть время, потраченное, я знаю, что я могу использовать секундомер или таймер (есть тонкое различие между этими двумя, которые я не могу вспомнить).

Или это использование ресурсов? Если да, то это лучший способ видеть ресурсы метод принимает? Я знаю, что я могу использовать один из методов ГХ или профайлер. Какие другие подходы существуют?

Задан 10/12/2008 в 02:32
источник пользователем
На других языках...                            


4 ответов

голоса
9

Дорого это вопрос степени и контекста.

Я работаю в обработке изображений, и я считаю разделение дорого. В моем случае, любая операция, которая заканчивается выполняются два до 5 миллионов раз в один цикл складывает. Это может быть разница между 1/8 секунды и 1/32 секунды. 1/8 секунды во время UI много для динамического отображения. 1/32 является приемлемым.

В других случаях это может быть полное декодирование больших изображений JPEG и масштабирование их вместо того, чтобы воспользоваться силой 2 масштабируется вниз версии также закодированы в том же файле.

В веб-страницы время, это может быть количество обращений сервера на странице загрузки. Посмотрите, что я имею в виду?

Контекст это все.

Ресурсы считаются дорогими, если они являются редкими и вызвать другие вещи, чтобы ждать. Если у вас есть 1 не-RAID диск, вы платите высокую цену на доступ, если два процесса подпрыгивая головой повсюду, следовательно, большую зависимость от кэширования как на диске, так и в ОС.

Принтер очень дорогой ресурс, особенно, если это из бумаги, поэтому очередь.

Исключение является дорогим по сравнению с другими средствами языка. Статический вызов метода дешев. Обычный вызов метода немного дороже. Виртуальный вызов метода немного дороже. Исключением являются гораздо более дорогостоящими.

Например, вы могли бы жаловаться С # не имеют тип-сильные типов полиморфного возвращения, и я мог бы сказать - о нет, это - просто выбросить свой результат и поймать правильный тип на другой стороне. Тогда я получить смеялись из комнаты для принятия предложения. По сравнению с возвращением (который является скудными несколькими инструкциями), исключение может привести к десяткам и сотням, в зависимости от контекста.

Ответил 10/12/2008 в 02:44
источник пользователем

голоса
1

Да, когда люди говорят о функции являются дорогостоящими, они, как правило, означает, с точки зрения времени выполнения. (Цена, которую вы платите за вызов его в том, что ваш поток блокируется на X микросекунд до завершения вызова функции, в конце концов)

Конечно, это также может быть дорогостоящим с точки зрения использования ресурсов, но, как правило, это время исполнения, что люди относятся.

Ответил 10/12/2008 в 03:48
источник пользователем

голоса
0

Я согласен с клеммной колодкой, но я хотел бы добавить, что дорого, как правило, подразумевает, что-то требует больше времени и средств, чем можно было бы ожидать, или больше ресурсов, чем необходимо для данной ситуации. В общем, что-то дорого, если есть альтернатива, которая использует меньше ресурсов процессора или что является более целесообразным.

Например, исключения считаются дорогими из-за количества тактов, необходимое для построения стека. Таким образом, это очень плохая идея использовать исключение в качестве механизма управления потока. Таким образом, если вы разборе формат пользовательских данных, и это был неправильный формат, вероятно, было бы лучше, чтобы вернуть объект со статусом неисправности и строки (искаженной линии 6 данных, поз 3), а не бросать MalformedDataException.

Но да, дорогой это вопрос степени и перспективы. Для дизайнера процессора, кэш-промах это приводит к катастрофе. Для клеммной колодки, разделение дорого. Для меня, доступ Harddisk дорого.

Ответил 10/12/2008 в 04:59
источник пользователем

голоса
0

Ответ в том, что у вас есть оба типа дорогих операций.

Я лично использую Муравьи Profiler от RedGate к mointor как время и аспекты памяти событий приложений и стоимости.

Ответил 10/12/2008 в 02:35
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more