QueryPerformanceCounter 状态?

Posted

技术标签:

【中文标题】QueryPerformanceCounter 状态?【英文标题】:QueryPerformanceCounter Status? 【发布时间】:2011-09-02 18:19:47 【问题描述】:

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

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

我主要对此感兴趣,因为我需要在我的应用程序中使用 timeGetTime 和 QueryPerformanceCounter 进行计时。

【问题讨论】:

QPC 已经稳定很久了。分辨率和准确性问题基本上是特定于机器的,永远不会改变。 @Hans:很高兴听到 QPC 很稳定。但是,机器的具体问题是什么状态?现代硬件的此类问题是否仍然普遍存在? @Cat:还有很多其他人virtualdub.org/blog/pivot/entry.php?id=106。 @ronag:机器特定问题的状态显然是机器特定的。但由于没有驱动程序/固件/硬件错误,QPC 工作正常,是 Windows 上高分辨率计时器的最佳选择。 【参考方案1】:

QPC 很久以前就被微软修补过(关于这个问题的旧 kb 文章:http://support.microsoft.com/kb/895980)。这个修复可以安装在任何目标系统上(我见过一些游戏这样做),但它不应该是必需的。所有较新的处理器都对此进行了硬件修复/补偿,并且 TSC 在内核之间正确同步,因此消除了基于 RDTSC 的计时器的问题。可以从这里获得热修复:http://support.microsoft.com/?id=896256 我不确定其他系统是否有任何东西,但从外观上看,这个修复在 Windows vista 和基于 Windows 7 的操作系统中是固有的。至于准确性问题,这取决于硬件本身,但是微软表示 QPC 是您可以获得的最可靠准确的计时器(具有不错的性能),因此缺少内联__rdtsc(),我怀疑您会得到更准确.

【讨论】:

以上是关于QueryPerformanceCounter 状态?的主要内容,如果未能解决你的问题,请参考以下文章

QueryPerformanceCounter 运行时错误

为啥与两者相比得到不同的毫秒值(QTIme 和 QueryPerformanceCounter)

QueryPerformanceCounter 是不是保证在启动后给您时间?

QueryPerformanceCounter 抛出不正确的数字

QueryPerformanceCounter 和奇怪的结果

QueryPerformanceCounter 状态?