Python 性能分析與優化 (Mastering Python High Performance)

費爾南多·多格裡奧 (Fernando Doglio)

買這商品的人也買了...

商品描述

<內容介紹>

本書首先介紹什麼是性能分析,性能分析如何在項目開發週期中發揮作用,以及通過在項目中進行性能分析實踐能夠取得的效果。緊接著介紹分析性能所需的核心工具(性能分析器和可視化性能分析器)。然後介紹一系列性能優化技術,後一章會介紹一個具有實際意義的優化案例。

<目錄>


第1章性能分析基礎1
1.1什麼是性能分析1
1.1.1基於事件的性能分析2
1.1.2統計式性能分析4
1.2性能分析的重要性5
1.3性能分析可以分析什麼6
1.3.1運行時間6
1.3.2瓶頸在哪裡8
1.4內存消耗和內存洩漏8
1.5過早優化的風險11
1.6運行時間複雜度12
1.6.1常數時間——O(1)12
1.6.2線性時間——O(n) 12
1.6.3對數時間——O(logn)13
1.6.4線性對數時間——O(nlogn)14
1.6.5階乘時間——O(n!)15
1.6.6平方時間——O( n2)16
1.7性能分析最佳實踐18
1.7.1建立回歸測試套件18
1.7.2思考代碼結構18
1.7.3耐心18
1.7.4盡可能多地收集數據19
1.7.5數據預處理19
1.7.6數據可視化19
1.8小結21
第2章性能分析器22
2.1認識新朋友:性能分析器22
2.2cProfile23
2.2.1工具的局限24
2.2.2支持的API24
2.2.3Stats類27
2.2.4性能分析示例30
2.3 line_profiler41
2.3.1kernprof43
2.3.2kernprof註意事項43
2.3.3性能分析示例45
2.4小結53
第3章可視化——利用GUI理解性能分析數據54
3.1KCacheGrind/pyprof2calltree54
3.1.1安裝55
3.1.2用法55
3.1.3性能分析器示例:TweetStats57
3.1.4性能分析器示例:倒排索引60
3.2RunSnakeRun64
3.2.1安裝65
3.2.2使用方法65
3.2.3性能分析示例:最小公倍數66
3.2.4性能分析示例:用倒排索引查詢68
3.3小結75
第4章優化每一個細節76
4.1函數返回值緩存和函數查詢表76
4.1.1用列表或鍊錶做查詢表79
4.1.2用字典做查詢表80
4.1.3二分查找80
4.1.4查詢表使用案例80
4.2使用默認參數84
4.3列表綜合表達式與生成器85
4.4ctypes90
4.4.1加載自定義ctypes90
4.4.2加載一個系統庫92
4.5字符串連接92
4.6其他優化技巧96
4.7小結98
第5章多線程與多進程99
5.1並行與並發99
5.2多線程100
5.3線程101
5.3.1用thread模塊創建線程102
5.3.2用threading模塊創建線程106
5.4多進程112
5.5小結117
第6章常用的優化方法118
6.1PyPy118
6.1.1安裝PyPy119
6.1.2JIT編譯器120
6.1.3沙盒121
6.1.4JIT優化122
6.1.5代碼示例124
6.2Cython126
6.2.1安裝Cython127
6.2.2建立一個Cython模塊127
6.2.3調用C語言函數129
6.2.4定義類型130
6.2.5定義函數類型131
6.2.6Cython示例133
6.2.7定義類型的時機選擇134
6.2.8限制條件138
6.3如何選擇正確的工具139
6.3.1什麼時候用Cython139
6.3.2什麼時候用PyPy139
6.4小結140
第7章用Numba、Parakeet和pandas實現極速數據處理141
7.1Numba141
7.1.1安裝142
7.1.2使用Numba144
7.2pandas工具151
7.2.1安裝pandas151
7.2.2用pandas做數據分析152
7.3Parakeet155
7.3.1安裝Parakeet156
7.3.2Parakeet是如何工作的156
7.4小結158
第8章付諸實踐159
8.1需要解決的問題159
8.1.1從網站上抓取數據159
8.1.2數據預處理162
8.2編寫初始代碼162
8.2.1分析代碼性能168
8.2.2數據分析代碼的優化172
8.3小結178