Skip to Main Content
高效能PYTHON程式設計
book

高效能PYTHON程式設計

by Micha Gorelick, Ian Ozsvald
August 2015
Intermediate to advanced content levelIntermediate to advanced
384 pages
7h 42m
Chinese
GoTop Information, Inc.
Content preview from 高效能PYTHON程式設計
122
|
第六章
3,716,789 branch-misses # 0.08% of all branches
14334.244888 task-clock # 0.999 CPUs utilized
751,185 page-faults # 0.052 M/sec
751,185 minor-faults # 0.052 M/sec
24 context-switches # 0.002 K/sec
5 CPU-migrations # 0.000 K/sec
14.345794896 seconds time elapsed
這告訴我們,導入
numpy
時,讓效能大幅提升的主要因素不是向量化的指令集,而是記
憶體局部性與減少的記憶體破碎。事實上,我們能夠從前述實驗中看到向量化大約只占
整體效能提升的 15%
4
瞭解記憶體議題是拖慢程式碼的主要因素並不會讓人太過驚訝,電腦原本就是設計來處
理這類問題的相關計算—將數字相乘及加總,瓶頸在於必須讓這些數字到達 CPU 的速
度夠快,好讓它盡其所能地進行計算。
記憶體配置與就地操作
為了最佳化記憶體支配的影響,讓我們試著使用範例 6-6 的相同方法,降低
numpy
程式
碼裡的記憶體配置數量。配置問題比先前討論的快取未命中還要嚴重。當資料不存在
於快取時,代替只是在 RAM 裡尋找它,配置也必須請求作業系統提供可運用的資料區
塊,然後保留它。對作業系統提出這類請求會產生遠超過單純填補快取的成本—填補快
取未命中是由主機板最佳化的硬體程序,配置記憶體則需要跟其他 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

流畅的Python

流畅的Python

Luciano Ramalho
手把手教会你linux

手把手教会你linux

桑德.范.乌格特

Publisher Resources

ISBN: 9789863477105