QueryPerformanceCounter 状态是什么?

5

我已经阅读了一些关于QPC实现的问题和不准确性的内容。但是所有这些讨论和文章似乎都过时了。

有人知道最新的Win7操作系统和Intel/AMD CPU上QPC功能的当前状态吗?是否有任何改进?例如Turbo Boost仍然是一个大问题吗?

我主要对此感兴趣,因为我需要在我的应用程序中决定使用timeGetTime还是QueryPerformanceCounter来计时。


QPC现在已经非常稳定了。分辨率和准确性问题基本上是机器特定的,这是永远不会改变的。 - Hans Passant
@Hans:很高兴听到QPC稳定。但是,机器特定问题的状态如何?在现代硬件上仍然普遍存在这样的问题吗? - ronag
@Cat:除了许多其他网站之外,http://www.virtualdub.org/blog/pivot/entry.php?id=106。 - ronag
@ronag:机器特定问题的状态显然是机器特定的。但除了驱动程序/固件/硬件错误外,QPC运行良好,并且它是在Windows上获得高分辨率计时器的最佳选择。 - jalf
1个回答

5

微软早期已经通过软件修补程序解决了QPC(详见问题的旧kb文章:http://support.microsoft.com/kb/895980)。可以在任何目标系统上安装此修复程序以确保其稳定性(我看到一些游戏这样做),但实际上并不需要。所有较新的处理器都有硬件修复/补偿措施,并且TSC在各核之间正确同步,因此基于RDTSC的计时器问题被消除了。热修复程序可从此处获取:http://support.microsoft.com/?id=896256。我不确定其他系统是否有类似的修复程序,但从表面看来,这个修复程序已经包含在基于Windows Vista和Windows 7的操作系统中。至于准确性问题,这取决于硬件本身,但是微软表示,QPC是您可以获得的最可靠准确的计时器(性能良好),所以除了内联__rdtsc()外,我怀疑您不会获得更高的准确性。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接