2010-10-05 93 views
2

我可以使用哪些免費工具來測試Linux中C++代碼的性能?基本上我想識別代碼的瓶頸並提高性能。我的應用程序主要涉及使用網絡數據的計算代碼。所以我想提高代碼的執行速度。測試C++代碼的性能

謝謝。

+0

你是說你需要一個好的分析工具? OProfile也許,valgrind工具? – erjot 2010-10-05 06:20:10

+2

代碼計算密集型(CPU),磁盤I/O密集型,網絡I/O密集型,內存消耗,多線程等?瞭解一些初始方向將幫助您找到更合適的工具。 – rwong 2010-10-05 06:20:44

+1

你想要執行時間或分析代碼的工作嗎? – jknair 2010-10-05 06:20:53

回答

7

對於典型的性能基準測試,這是我使用的。

  • gprof/oprofile - 用於CPU密集分析您的代碼。
  • 的netstat /空靈 - 網絡統計
  • 的iostat/SAR - 用於I/O
  • 的vmstat - 內存
  • 的mpstat/SAR - CPU使用率

現在ü可以隔離問題基於這些工具的輸出。

例如: - 如果I/O是恆定的並且在限制範圍內,您可以將I/O視爲一個問題。 如果CPU使用率如圖所示my mpstat很大,那麼使用gprof/oprofile進行分析。

沒有將它們全部用於不同的運行,它很難找出瓶頸。

注意:U可以編寫腳本將它們全部運行起來,並將結果存儲在每次運行的指定文件夾中。

+0

+1提到好的工具。 + valgrind用於極其CPU /緩存密集型任務。爲了快速啓動,在程序運行時檢查CPU與經過時間的比率是很有必要的 - 可以看到最高。如果它非常閒散,那麼你需要改進你的網絡 - 考慮用其他方式打包/壓縮數據。如果CPU固定,使用'gprof'或其他來描述哪些功能花費時間,或者引入自己的定時器(boost可以使用高分辨率定時功能)來衡量處理的特定部分需要多長時間才能完成。 – 2010-10-05 07:19:06

1

到目前爲止,我所知道的最好的Linux分析器是Zoom。雖然這是一個商業產品,這不是太昂貴的,你可以要求獲得30天的免費評估許可證

2

我建議Valgrind的

  • CPU使用率,callgrind子模塊(源代碼行粒度)
  • 內存泄露
  • 樓宇通話圖
  • 一些高級問題,如發現多線程鎖定機制中的問題

callgrind輸出可以通過KCacheGrind直觀顯示。