我很好奇是否有人對性能測試庫和前端有任何建議,這些建議會爲C++生成很好的圖形圖表(例如gcov如何生成覆蓋率數據,並且有用於查看代碼覆蓋率數據的前端) 。能夠產生圖表,例如:C++的性能測試實用程序
將是非常漂亮的。我們現在使用cppunit進行單元測試,所以也許有一些與之相結合的東西。
更多信息:我們正在使用Intel x86-64機器在Linux上進行編譯(我們使用Ubuntu Lucid/Maverick)。
我很好奇是否有人對性能測試庫和前端有任何建議,這些建議會爲C++生成很好的圖形圖表(例如gcov如何生成覆蓋率數據,並且有用於查看代碼覆蓋率數據的前端) 。能夠產生圖表,例如:C++的性能測試實用程序
將是非常漂亮的。我們現在使用cppunit進行單元測試,所以也許有一些與之相結合的東西。
更多信息:我們正在使用Intel x86-64機器在Linux上進行編譯(我們使用Ubuntu Lucid/Maverick)。
一些建議:
在linux上,你可以試試valgrind工具包。 Valgrind包含可以剖析代碼的callgrind工具。 KCacheGrind非常好地顯示了cachegrind的輸出。
這個想法並不是剖析代碼本身,而是創建一個夜間構建系統,通過在一些perf上採用一些簡單的指標(甚至可能只是運行時)來通知我們性能迴歸。我們將會有單元測試。所以我們並不特別想要測試我們的代碼,我們只是想看看它的原始性能。 – 2011-01-05 18:19:57
@Kenny:你可以解析'cg_diff'的輸出來產生你想要的那種圖形。 – 2011-01-05 19:00:19
有兩個性能測試框架可以幫助你。
他們兩人是由谷歌測試框架的啓發,並提供接口來支持性能測試,所以很容易運輸的原始googletest到Hayai或SkyPat。
SkyPat結合了單元測試和perf_evnet。它擴展了Google Test的概念並提供了訪問PMU的界面。 perf_event給出了精確的週期數,這對於時序變化敏感的工具很有用,如編譯器。 SkyPat也可以通過PMU事件(eq:週期,指令,緩存參考,緩存未命中等)來分析一段代碼。
Hayai支持不同的操作系統的一些性能測量方法(Windows:QueryPerformanceCounter()
,Linux的:gethrtime()
,蘋果公司(OSX,iOS版):mach_absolute_time()
)到它的性能測試框架。
http://stackoverflow.com/questions/4394606/beyond-stack-sampling-c-profilers,有一個有趣的持續清單這樣的事情... – Nim 2011-01-05 16:23:31
這將主要取決於你正在運行的操作系統和CPU至於什麼是可用的...你是否正在尋找更多的自動化測試或性能分析? – AJG85 2011-01-05 18:58:29
我正在考慮更像是一個自動迴歸測試設置,它將特別針對性能指標。使用cppunit會很酷,但這不是必需的,我會對任何類型的性能測試線束感興趣。在我們的迴歸測試記錄一些大的運行時間命中或類似的東西之後,分析將是我們要採取的步驟。 – 2011-01-05 23:18:16