Объяснение счетчика производительности с высоким разрешением и его существования связано с .NET Stopwatch?

Внутри статического секундомера конструктора мы видим следующий код, который в основном проверяет, существует ли счетчик производительности с высоким разрешением.

static Stopwatch()
{
    if (!SafeNativeMethods.QueryPerformanceFrequency(out Frequency))
    {
        IsHighResolution = false;
        Frequency = 0x989680L;
        tickFrequency = 1.0;
    }
    else
    {
        IsHighResolution = true;
        tickFrequency = 10000000.0;
        tickFrequency /= (double) Frequency;
    }
}

В MSDN говорится о QueryPerformanceFrequency :

Возвращает частоту счетчика производительности с высоким разрешением, если он существует

Довольно неясно, однако, когда именно он существует? Я подозреваю, что он обычно существует на текущих машинах, но а когда именно нет?

Это интересно, потому что, когда его не существует, Секундомер становится простой оболочкой вокруг свойства DateTime.UtcNow .

10
задан Peter Mortensen 22 March 2013 в 19:53
поделиться