Высокопроизводительный таймер против StopWatch

Кто-нибудь знает, если HiPerfTimer или StopWatch класс лучше для бенчмаркинга и почему?

Ответ 1

Stopwatch основан на таймере с высоким разрешением (там, где это возможно), вы можете проверить это с помощью IsHighResolution

Ответ 2

Они одинаковы, когда речь заходит о сроках с высоким разрешением.

Оба используют это:

[DllImport("Kernel32.dll")]
private static extern bool QueryPerformanceCounter(out long PerformanceCount);

и это:

[DllImport("Kernel32.dll")]
private static extern bool QueryPerformanceFrequency(out long Frequency);

чтобы выполнить основное время. (Вы можете проверить это с помощью Reflector.NET). Я бы использовал StopWatch, потому что уже часть фреймворка (нет необходимости связывать другую dll), и у него были лучшие функции, чем HiPerfTimer.

Ответ 3

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

Другой генерирует исключение Win32Exception, если поддержка счетчика высокого разрешения отсутствует.