Last Updated on 2021-05-19 by Clay
在開發程式的過程中,我們除了小心翼翼地解決程式當中的 Bug 外,在寫好程式、能夠正常運行以後,我們也常常會憂心於程式的『執行效率』。
所幸,在 PyCharm 這個好用的 IDE 中,我們可以通過 Profile 這個功能來簡單地分析程式的項能。
如果對於 PyCharm 感興趣,可以參考我之前寫過的《Python IDE PyCharm 安裝教學》。
簡單方式
在開始說明 PyCharm 的 Profile 之前,我想簡單地紀錄另一個比較程式好壞的方法。
比如說,今天我們的程式是一個『解決問題』的程式,開始執行之後會嘗試解決、解決完之後便中止——若是這樣的程式,我們可以簡單地通過比較執行時間來判斷程式好壞。
在 Linux 系統底下,可以直接使用 time 指令來顯示 runtime。比如說:
time python3 your_program.py
如果想要直接將測試時間寫在程式當中,可以試試看使用 time 模組:
import time start_time = time.time() # Your Code ... print('Cost Time: {}s'.format(time.time()-start_time))
Profile
使用 PyCharm 當中的 Profile 其實非常簡單,在 PyCharm 的右上角有著這樣的圖示:
這個便是 Profile 的執行按鈕,按下去之後程式會開始執行。如果沒有任何除了運行時的 Log 以外的視窗出現,請按下方圖中的按鈕:
通常來講,會印出像以下這樣的表格:
有 3 個欄位,分別為:
- Call Count
- Time (ms)
- Own Time (ms)
其中 Call Count 很好理解,就是該區域被呼叫的次數。另外 Time 跟 Own Time 其實我並沒有很清楚兩者之間的差別,不過看網路上大家的意見傾向於先優化 Own Time 高者。
另外,還可以看到 Call Graph:
例如我這個程式,就應該集中優化 main.py 這個主程式的部份。