Статус QueryPerformanceCounter?

Я читал некоторые о проблемах и неточности реализации QPC. Но все эти обсуждения и статьи выглядят довольно устаревшими.

Кто-нибудь знает, каков текущий статус функции QPC на последней ОС Win7 и процессоре Intel/AMD? Были ли улучшения? Является, например, Turbo Boost по-прежнему остается большой проблемой?

В основном я заинтересован в этом, так как мне нужно решить, используя timeGetTime и QueryPerformanceCounter для синхронизации в моем приложении.

Ответы

Ответ 1

QPC была исправлена ​​со стороны программного обеспечения microsoft age ago (старая статья kb по проблеме: http://support.microsoft.com/kb/895980). Это исправление может быть установлено на любой целевой системе для разума (я видел несколько игр, которые делают это), однако это не нужно. Все новые процессоры имеют аппаратное исправление/компенсацию для этого, а также правильность синхронизации TSC между ядрами, поэтому устраняются проблемы с таймерами RDTSC. Горячее исправление можно получить отсюда: http://support.microsoft.com/?id=896256 Я не уверен, что есть что-то для других систем, но из соображений это исправление было inheirent в Windows Vista и Windows 7 основанных ОС. Что касается вопроса о точности, то это зависит от самого аппаратного обеспечения, однако Microsoft говорит, что QPC - это самый надежный точный таймер, который вы можете получить (с приличной производительностью), так что не встраивайте __rdtsc(), я сомневаюсь, что вы получите более точную,