Каков наилучший способ измерения времени выполнения функции?

Очевидно, что я могу сделать и DateTime.Now.After - DateTime.Now.Before, но должно быть что-то более сложное.

Любые советы оценены.

Ответ 1

System.Environment.TickCount и System.Diagnostics.Stopwatch класс - это два, которые хорошо работают для более точного разрешения и простого использования.

См. также:

Ответ 2

Я бы определенно посоветовал вам взглянуть на System.Diagnostics.Stopwatch

И когда я оглянулся вокруг больше о секундомере, я нашел этот сайт;

Остерегайтесь секундомера

Там была упомянута еще одна возможность

Process.TotalProcessorTime

Ответ 3

Использовать профайлер

Однако ваш подход будет работать, но если вы ищете более сложные подходы. Я бы предложил использовать С# Profiler.

Преимущества, которые у них есть:

  • Вы даже можете получить уровень заявлений Распад
  • В вашей кодовой базе не требуются изменения.
  • Инструментарий обычно имеет очень незначительные издержки, поэтому можно получить очень точные результаты.

Существует много доступных open-source.

Ответ 4

Tickcount хорош, однако я предлагаю запустить его 100 или 1000 раз и вычислять среднее значение. Это не только делает его более измеримым - в случае действительно быстрых/коротких функций, но помогает справляться с некоторыми одноразовыми эффектами, вызванными накладными расходами.