性能分析工具初試

性能分析工具小試

說明:想快速知道程序哪裏比較耗時,可是又不想在每一個函數或者諸多代碼塊加時間統計。最近兩天嘗試瞭如下工具。

1. perf

1.1 安裝

sudo yum install perf* html

注:這個也能夠用源碼安裝,好比我係統目錄:/usr/src/kernels/3.10.0-862.el7.x86_64/tools/perf 這裏邊直接帶有perfgit

1.2 使用

首先編譯debug版程序,好比編譯了test程序,而後使用以下命令windows

perf record -g -e cpu-clock ./test test_parm1函數

這時候程序正常結束的會自動生成perf.data 文件。這個文件仍是須要藉助perf來看,以下工具

perf report性能

內容大概以下:spa

1.3 總結

從上圖能夠看清楚時間主要消耗在哪裏,不過perf看起來仍是不夠清楚,並且函數調用不夠深(我沒仔細研究,可能還有其它參數設置。).net

2.valgrind

2.1 安裝

能夠去valgrind 官網 http://valgrind.org/downloads/current.html 下載,安裝步驟能夠看REDME,安裝很方便,我當時沒出問題。debug

2.2 使用

這裏只操做生成調用關係圖,tool還包含內存檢查等其它組件,具體使用能夠查資料。htm

例如:我有以下帶參數的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 總結

實際還試了gprof工具,感受仍是valgrind用起來方便,主要函數調用關係它畫的很深,忽然以爲這下藉助來看kaldi源碼會很方便,哈哈。

相關文章
相關標籤/搜索