我已经阅读了一些关于QPC实现的问题和不准确性的内容。但是所有这些讨论和文章似乎都过时了。
有人知道最新的Win7操作系统和Intel/AMD CPU上QPC功能的当前状态吗?是否有任何改进?例如Turbo Boost仍然是一个大问题吗?
我主要对此感兴趣,因为我需要在我的应用程序中决定使用timeGetTime还是QueryPerformanceCounter来计时。
我已经阅读了一些关于QPC实现的问题和不准确性的内容。但是所有这些讨论和文章似乎都过时了。
有人知道最新的Win7操作系统和Intel/AMD CPU上QPC功能的当前状态吗?是否有任何改进?例如Turbo Boost仍然是一个大问题吗?
我主要对此感兴趣,因为我需要在我的应用程序中决定使用timeGetTime还是QueryPerformanceCounter来计时。
微软早期已经通过软件修补程序解决了QPC(详见问题的旧kb文章:http://support.microsoft.com/kb/895980)。可以在任何目标系统上安装此修复程序以确保其稳定性(我看到一些游戏这样做),但实际上并不需要。所有较新的处理器都有硬件修复/补偿措施,并且TSC在各核之间正确同步,因此基于RDTSC
的计时器问题被消除了。热修复程序可从此处获取:http://support.microsoft.com/?id=896256。我不确定其他系统是否有类似的修复程序,但从表面看来,这个修复程序已经包含在基于Windows Vista和Windows 7的操作系统中。至于准确性问题,这取决于硬件本身,但是微软表示,QPC是您可以获得的最可靠准确的计时器(性能良好),所以除了内联__rdtsc()
外,我怀疑您不会获得更高的准确性。