Кто-нибудь знает, если HiPerfTimer или StopWatch класс лучше для бенчмаркинга и почему?
Высокопроизводительный таймер против 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, если поддержка счетчика высокого разрешения отсутствует.