我想使用高性能事件计时器(HPET)作为一种性能分析工具,以快速进行高精度测量。timeGetTime在1毫秒的情况下提供的分辨率不足够,并且QueryPerformanceCounter每次读取的速度比我想要的慢得多。在研究这个问题时,我发现了HPET,但是我找不到如何实际使用它的示例。
那么我可以直接使用它(汇编语言也可以),还是必须依赖于Win32 API中已经内置的多媒体/高性能定时工具?
我也对使用HPET作为计时器感兴趣。据我所知,QueryPerformanceCounter和QueryPerformanceFrequency实际上是在访问HPET的计数器和时钟,这在Windows XP下是可行的(例如,请参见http://www.geisswerks.com/ryan/FAQS/timing.html)。
因此,就计时代码而言,我认为通过使用QueryPerformanceCounter,实际上可以访问构成HPET基础的计数器,并且这些计数器都存在于芯片组中(而不是处理器中)。
QueryPerformanceCounter
不安全使用。在这些情况下,Windows无法调整QPC频率,导致时间偏差。在这些情况下,HPET和ACPI仍然是可靠计时器的唯一选择。因此,这个问题仍然没有得到解答。 - Mysticial