2011-07-20 295 views
2

在Windows中通过调用QueryPerformanceCounter而不是使用较低分辨率的定时方法会对性能产生影响吗?QueryPerformanceCounter对性能的影响

+0

http://www.gamedev.net/topic/387778-queryperformancecounter-performance/ - 最后一篇文章很有趣 – Schnommus

+0

我建议你做一些时间测试,比较QueryPerformanceCounter和其他“较低分辨率的定时方法”,以及看看你观察到了什么差异。 :-) –

+1

这样的? http://www.nvidia.com/object/timer_function_performance.html – Schnommus

回答

5

尽管陈旧,this Dr Dobb's article给出了一个很好的总结选项及其成本,优点和缺点(见最后的表格),包括QPC。为了获得您的情况的真实时机,使用一个分析器(如AMD的CodeAnalyst)或类似Dr Fog's performance monitorsite,其中还有其他一些使用的东西,取决于你想要进入'这个通话/指导/行动花多少钱“)。

+0

有趣的阅读 - 我认为会有一些差异,但我没有想到QueryPerformanceCounter和GetTickCount之间〜88x的区别 – Konrad

+0

@konrad:GetTickCount只是获取当前时间步骤中的系统当前时间点和时间点,另一方面QPC查询板上(在主板上,如果存在的话)高频计时设备,并且iirc进入内核模式来执行该操作,这很昂贵。但是可以预料的是,这种折衷是准确性和粒度与速度的关系(由于多核可变速CPU的性能,正确使用它非常困难),所以不能再滥用TSC来获得最佳性能。请记住,某人测试的结果并不是你可能得到的,这就是为什么你总是测试你自己的设置 – Necrolis

+0

@Necrolis,如果你的CPU支持常量tsc(一些新的),那么变速不是问题。 。多核的问题是在* rdtsc(例如cpuid)之前必须调用的序列化操作的开销,因为核心数量增加 - 这会增加成本... – Nim