На самом деле выполнение Вашего кода показывает что Полученный:: g () назван.
Секундомер основан на таймере с высоким разрешением (если он доступен), вы можете проверить это с помощью IsHighResolution
Они одинаковы, когда дело доходит до синхронизации с высоким разрешением.
Оба используют это:
[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.
StopWatch - он также работает в системах, которые не поддерживают счетчик производительности с высоким разрешением, и вам не нужны никакие внешние библиотеки для его использования.
Другой генерирует Win32Exception, если нет поддержки счетчика высокого разрешения.