
透過效能分析找出瓶頸
|
19
為了幫助你瞭解你的 RAM 使用量為什麼那麼高,我們會說明
memory_profiler
(參見第
43 頁的〈以 memory_profiler 診斷記憶體使用情況〉。在標記圖(labeled chart)上記錄
一段時間的 RAM 使用量,是特別有用的做法,因此,你能夠向同事解釋為什麼某些函
式的 RAM 使用量會超出預期。
無論採取什麼方式對你的程式碼進行效能分析,必須記得在你的程式碼裡
安排足夠的單元測試,單元測試幫助你避開愚蠢的錯誤,並且有助於保持
你的結果可重現(reproducible)。避開錯誤,免遭危險。
在編譯或重寫你的演算法之前,
總是
先為你的程式碼進行效能分析。你
需要證據幫助你判斷出最有效率的方法,讓你的程式碼執行得更快。
最後,我們會介紹 CPython 裡的 Python bytecode(位元組碼)(參見第 53 頁的〈使用
dis 模組檢查 CPython 位元組碼〉),好讓你能夠理解底層發生什麼事。尤其是,瞭解
Python 的基於堆疊的虛擬機器如何運作,將幫助你理解為什麼特定編碼風格會比其他風
格執行更緩慢。
在本章結束之前,我們會檢視如何在進行效能分析時整合單元測試(參見第 58 頁的
〈在最佳化期間進行單元測試以維持正確性〉),保護程式碼的正確性,同時讓它執行得
更有效率。
我們最後會討論效能分析的策略(參見第 60 頁的〈成功地為你的程式碼進行效能分析
的策略〉),所以你能夠可靠地分析你的程式碼,並且收集到試驗你的假設所需要的正
確資料。在這裡 ...