性能分析工具小試 1. perf sudo yum install perf* 註:這個也可以用源碼安裝,比如我系統目錄:/usr/src/kernels/3.10.0-862.el7.x86_64/tools/perf 這裡邊直接帶有perf 首先編譯debug版程式,比如編譯了test程式,然後 ...
說明:想快速知道程式哪裡比較耗時,但是又不想在每個函數或者諸多代碼塊加時間統計。最近兩天嘗試了以下工具。
1. perf
1.1 安裝
sudo yum install perf*
註:這個也可以用源碼安裝,比如我系統目錄:/usr/src/kernels/3.10.0-862.el7.x86_64/tools/perf 這裡邊直接帶有perf
1.2 使用
首先編譯debug版程式,比如編譯了test程式,然後使用如下命令
這時候程式正常結束的會自動生成perf.data 文件。這個文件還是需要藉助perf來看,如下
perf report
內容大概如下:
1.3 總結
從上圖可以看清楚時間主要消耗在哪裡,不過perf看起來還是不夠清楚,而且函數調用不夠深(我沒仔細研究,可能還有其它參數設置。)
2.valgrind
2.1 安裝
可以去valgrind 官網 http://valgrind.org/downloads/current.html 下載,安裝步驟可以看REDME,安裝很方便,我當時沒出問題。
2.2 使用
這裡只操作生成調用關係圖,tool還包含記憶體檢查等其它組件,具體使用可以查資料。
例如:我有如下帶參數的siggle-main程式,使用以下命令,當程式正常退出時可以生成callgrind.out.xxx文件:
valgrind --tool=callgrind ./bin/single-main ./models/ ./data/wav_list.txt test.out
此文件拷貝到windows平臺然後藉助圖形工具kcachegrind 打開,去官網下載:http://kcachegrind.sourceforge.net/html/Download.html
打開內容如下,函數調用,時間消耗清晰明瞭:
2.3 總結