我想快速使用高性能事件計時器(HPET)進行性能分析工具,以便進行非常高精度的測量。 timeGetTime在1ms時不能提供足夠的分辨率,QueryPerformanceCounter每次讀取都比我想要的要慢得多。我在研究這個問題時遇到了HPET,但是我看不到有關如何真正瞭解它的任何示例。我是否可以直接使用它(組裝很好),還是必須依賴已經內置到Win32 API中的多媒體/高性能計時工具?HPET是否可以在Windows中直接訪問?
回答
我發現this info同時挖洞,它似乎是最具成本效益的方式。當我有膽量深入裝配時,我會嘗試一下。 :)
UPDATE
我與我的探查測試這一點。雖然有點快,看來我還有其他的開銷噸:((我沒有時間理會,因爲我似乎沒有足夠的利益)
不!不要使用RDTSC,它會在多核機器上做出奇怪的事情。每個擁有自己櫃檯的核心都可以提供功能消耗時間等效果。時間戳計數器並不總是同步! 在那裏,做到了。 – 2009-04-24 17:28:39
並說你跟蹤線程?這如何影響差異? – leppie 2009-04-24 19:45:18
跟蹤線程只會告訴你有*可能*是一個問題,而不是如果有*問題或如何解決它。要安全地使用RDTSC,您必須*將線程固定到特定內核。無法從用戶空間安全地計算跨核心的RDTSC差異。 – 2009-04-26 07:46:16
我也有興趣在使用HPET,但作爲定時器,我的理解是QueryPerformanceCounter和QueryPerformanceFrequency實際上是訪問HPET的計數器和時鐘,並且這在Windows XP下工作(例如,請參見http://www.geisswerks.com/ryan/FAQS/timing.html)
所以就時序代碼而言,我認爲通過使用QueryPerformanceCounter,您實際上可以訪問構成HPET基礎的計數器,並且這些都在芯片組(而不是處理器)中存在。
據我所知,XP不支持HPET,所以QueryPerformanceCounter實際上是使用RDTSC。 – 2012-11-04 21:20:46
有關完整說明,請參閱https://en.wikipedia.org/wiki/High_Precision_Event_Timer#cite_note-7(有關「使用和兼容性」中XP SP3的注意事項)。簡而言之,XP使用帶有軟件和各種硬件的「盡力而爲」HPET_emulation_。 – 2015-06-22 01:38:00
- 1. 是否可以直接訪問索引?
- 2. 是否可以直接訪問QDeclarativeListProperty,而不是作爲模型?
- 3. 是否可以直接訪問Firebase存儲資源URL?
- 4. 是否可以直接訪問全局符號註冊表?
- 5. 是否可以直接訪問視頻卡? (沒有API)
- 6. 是否可以在Android中使用ContentProvider並直接訪問數據庫?
- 7. 是否可以直接訪問多位圖中的某個位置(不是鍵)
- 8. 是否可以在MonoTouch中訪問NSURLCache?
- 9. DBSet是否需要直接訪問?
- 10. JSP EL可以直接訪問屬性
- 11. 我可以訪問沒有直接
- 12. iPhone Sdk可以直接訪問SQL Server
- 13. 是否可以直接訪問樹枝模板中的Route參數?
- 14. 是否可以訪問Windows中的主機保護區?
- 15. 是否可以在特定的js中直接鏈接?
- 16. 是否可以直接修改HTML流?
- 17. 是否可以直接選擇EXISTS?
- 18. (How)可以直接在Javascript中訪問struts動作字段嗎?
- 19. 是否可以在OS X中直接運行Windows Phone 8模擬器?
- 20. 是否可以直接從報告訪問「Reporting Services \ ReportManager \ Web.config」文件?
- 21. 我們是否可以直接訪問核心數據的SQLite數據庫
- 22. 是否可以使用課堂外的直接ivar訪問來提高效率?
- 23. 是否有任何方法可以直接從視頻庫訪問文件?
- 24. 是否可以間接訪問python中的當前類名?
- 25. 是否可以在JDBC/Java中使用直接路徑插入?
- 26. 是否可以直接在XCode 8中創建一個.xcarchive?
- 27. 是否可以直接在HTML中嵌入緩存清單?
- 28. 是否可以直接在XML中引用Array Resource Items?
- 29. 是否可以直接在應用程序中使用ScalaCheck?
- 30. 可可綁定直接訪問值
我也想使用它,因爲我猜我在我的分析器中遇到同樣的問題。 – leppie 2009-04-24 15:42:53
這似乎是相關的:http://msdn.microsoft.com/en-us/magazine/cc163996.aspx – 2013-07-22 03:39:06
作爲進一步更新:RDTSC和「QueryPerformanceCounter」是不安全的,當系統有一個非恆定的基頻(在系統內超頻)。在這些導致時序偏斜的情況下,Windows無法調整QPC頻率。在這些情況下,HPET和ACPI仍然是可靠計時器的唯一選擇。 **因此,這個問題仍然沒有解決。** – Mysticial 2017-03-15 22:47:47