2011-07-20 520 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