Статус QueryPerformanceCounter?
Я читал о проблемах и неточности реализации QPC. Но все эти обсуждения и статьи кажутся довольно устаревшими.
Кто-нибудь знает, каково текущее состояние функциональности QPC на последних версиях ОС Win7 и Intel/AMD? Были ли улучшения? Например, Turbo Boost по-прежнему большая проблема?
В основном я заинтересован в этом, так как мне нужно выбрать между использованием timeGetTime и QueryPerformanceCounter для синхронизации в моем приложении.
1 ответ
QPC был исправлен программным обеспечением на стороне Microsoft много лет назад (старая статья kb о проблеме: http://support.microsoft.com/kb/895980). Это исправление может быть установлено на любую целевую систему для разума (я видел несколько игр, делающих это), однако оно не должно быть необходимо. Все новые процессоры имеют аппаратное исправление / компенсацию для этого, а также правильную синхронизацию TSC между ядрами, поэтому проблемы с RDTSC
основанные таймеры устранены. Исправление можно получить здесь: http://support.microsoft.com/?id=896256 Я не уверен, есть ли что-нибудь для других систем, но, судя по всему, это исправление было унаследовано в Windows Vista ОС Windows 7. Что касается вопроса точности, то это зависит от самого оборудования, однако Microsoft говорит, что QPC является наиболее надежным и точным таймером, который вы можете получить (с приличной производительностью), поэтому он недостаточно встроенный. __rdtsc()
Я сомневаюсь, что вы получите более точный.