[Python] 用 pyprof2calltree+qcachegrind 將 profiling 結果視覺化

[Python] 用 pyprof2calltree+qcachegrind 將 profiling 結果視覺化

在對 Python 程式做效能最佳化時,我們可以用 Profile+gprof2dot 將 profiling 結果視覺化

不過後來發現也還有別的方法可以視覺化,還可以少掉一個 dot 轉 png 的步驟,

那就是利用 pyprof2calltreeqcachegrind (kcachegrind)~

 

1. 安裝 pyprof2calltree 和 qcachegrind

用 pip 安裝 pyprof2calltree:

pip install pyprof2calltree

 

接著要安裝 qcachegrind,這是 kcachegrind 包含的其中一隻程式,

原本 kcachegrind 是在 Linux 上使用的,

但在 Mac 上要編譯 kcachegrind 好像很難,因此通常是改用 qcachegrind (QT 版本)~

幸運的是 Homebrew 裡面已經有 qcachegrind 直接可用了:

brew install qcachegrind

 

2. 執行 pyprof2calltree

依照 用 Profile+gprof2dot 將 profiling 結果視覺化 這篇裡的方法,

先產生出 pstats 檔案後,就可以直接呼叫 pyprof2calltree 來視覺化這個 pstats 檔,

而不需要先轉成 dot 資料,再轉成 PNG 圖檔~

下面的 -i 參數是指定輸入的 pstats 檔,-k 則是直接呼叫出 qcachegrind (或 kcachegrind):

pyprof2calltree -i profile.pstats -k

 

一個蠻漂亮的 GUI 程式會跑出來,

點到 Call Graph 分頁,就可以看到蠻類似 GraphViz 跑出來的圖啦,

少了 dot 轉 PNG 的步驟,也算是蠻方便的選擇喔~

Screen Shot 2016-08-19 at 1.00.30 AM  

 

參考資料:Profiling Python using cProfile: a concrete case

 

(本頁面已被瀏覽過 1,078 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料