Я надеюсь, что с этим вопросом мы сможем собрать кучу полезных советов для измерения производительности приложений .Net.
Лично я нахожусь в ситуации, когда хочу протестировать алгоритм и хочучтобы убедиться, что измерения достаточно точны.Поэтому я делаю следующее:
- Компиляция в режиме выпуска (оптимизация и т. Д.)
- Запуск приложения вне Visual Studio (избегает ненужных проверок и т.код несколько раз и занимает наименьшее время (убедитесь, что он был JIT-скомпилирован раньше и избегает периодического GC, специфических вещей для ОС и т. д.) (* 1)
- Использование правильных часов (* 2)
(* 1) Если входные данные не всегда одинаковы, может иметь смысл сделать среднее время работы.Также см. Точное измерение истекшего времени настенных часов в .NET
Итак, вопрос на самом деле:
Есть ли что-то, что я (или другие) пропустил в приведенном выше списке?И разработка того, почему рекомендации (в списке или новые) будут полезны.
Обновление: Кто-нибудь использует ngen
перед сравнительным тестированием?Если да, то почему?
Спасибо, Лассе Эспехолт