
509
16
測試、除錯和最佳化
你不是寫完程式碼就完成了程式設計的工作,必須在程式碼能正確運行,
而且有可接受的效能時才算完成。
測試
(
testing
,涵蓋於後面的「測試」
中)代表驗證程式碼有正確地運作,方法是在已知的條件下執行程式碼,
並檢查結果如同預期。
除錯
(
debugging
,涵蓋於後面的「除錯」中)代
表找出導致錯誤行為的原因,並修補它們(找到原因後,修補工作通常很
容易)。
最佳化
(
optimizing
,涵蓋於後面的「最佳化」中)通常是用來確保可接
受效能的所有活動之總稱。最佳化的步驟可分解為
benchmarking
(
基準化
分析
,測量給定任務的效能來檢查它是否有在可接受的範圍內)、
profling
(
效能側寫
,為程式裝備額外的程式碼,以辨識出效能瓶頸),以及實際
的最佳化(移除瓶頸,以讓整體的程式效能達到可接受的程度)。顯然,
在(使用效能側寫)找到效能瓶頸之前,你無法移除它們,而在那之前,
則需要知道
有
效能問題存在(使用基準化分析)。
本章以它們發生在開發過程中的順序涵蓋這些主題:首先是測試,接著
是除錯,最後為最佳化。大部分程式設計師的熱情都投注在最佳化上:
測試和除錯經常(就我們看來,是錯誤地)被視為雜務,而最佳化被
視為是有趣的工作。因此,如果你只想閱讀本章中的一節,我們會建
議「開發夠快的Python 應用程式」,它總結了 Python 式(Pythonic)
的最佳化途徑,很接近Jackson 經典的「最佳化守則(
http://wiki.
c2.com/?RulesOfOptimization ...