Как измерить производительность приложений .Net - PullRequest
2 голосов
/ 18 июня 2011

Я надеюсь, что с этим вопросом мы сможем собрать кучу полезных советов для измерения производительности приложений .Net.

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

  • Компиляция в режиме выпуска (оптимизация и т. Д.)
  • Запуск приложения вне Visual Studio (избегает ненужных проверок и т.код несколько раз и занимает наименьшее время (убедитесь, что он был JIT-скомпилирован раньше и избегает периодического GC, специфических вещей для ОС и т. д.) (* 1)
  • Использование правильных часов (* 2)

(* 1) Если входные данные не всегда одинаковы, может иметь смысл сделать среднее время работы.Также см. Точное измерение истекшего времени настенных часов в .NET

Итак, вопрос на самом деле:

Есть ли что-то, что я (или другие) пропустил в приведенном выше списке?И разработка того, почему рекомендации (в списке или новые) будут полезны.

Обновление: Кто-нибудь использует ngen перед сравнительным тестированием?Если да, то почему?

Спасибо, Лассе Эспехолт

Ответы [ 2 ]

1 голос
/ 18 июня 2011

Если вы тестируете один алгоритм, то вы также можете написать небольшое тестовое приложение (простое решение «сделай сам»), добавить кучу входных данных и выполнить за миллион итераций, а затем взять среднее значение.Если вам нужно протестировать несколько алгоритмов, то вы можете расширить маленькое тестовое приложение в небольшой набор тестов и получить результаты для всех тестовых алгоритмов.Если вы используете непрерывную интеграцию, то этот тестовый комплект может давать вам частые отзывы о производительности этих алгоритмов.

Или вы используете инструменты профилирования, которые поставляются с редакцией Visual Studio.

Что касается вашего комментария №2, класс System.Diagnostics.Stopwatch почти такой же хороший, как и для общего назначения.ОС, такая как Windows.

1 голос
/ 18 июня 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...