摘要:這意味著一級優化,而不是進入冗長的優化序列。使用創建生成器以及盡可能使用,它們比正常的列表方式更快。讓我繼續下一個層次的第二部分快速優化技巧
注: 本文的原文地址 quick-python-performance-optimization-part-i
Python可能最容易扼殺你的想法,但不是最好的代碼實現。盡管強烈反對過早優化,但在 Python 代碼中一點點的優化都可能帶來巨大的性能提升。
解釋僅僅是目的,最正確的方式是天天使用 Python 編程,并且與性能影響相關。
%timeit (per line) 和 %prun (cProfile) 在 ipython 的交互式 Shell 中
當你的代碼在工作時,分析你的代碼,并且嘗試找出性能瓶頸在哪里。這不與過早的優化是萬惡之源這個事實相反。這意味著一級優化,而不是進入冗長的優化序列。
更多的分析你的 Python 代碼,你需要閱讀這個 python-performance-analysis
另外一個有趣的包, line_profiler 是一行一行的分析代碼
分析 line_profiler
降低方法調用次數,如果你有一個列表需要操作,傳遞整個列表,而不是遍歷整個列表并且傳遞每個元素給函數并返回。
使用 xrange 代替 range。(在 Python2.x 中這樣做,因為 Python 3.x 中是默認的)
xrange 是 range 的 C 實現,著眼于有效的內存使用。
對于大數據,使用 numpy,它比標準的數據結構好很多。
"".join(string) 比 + or += 好
while 1 比 while True 快
list comphrension > for loop > while
列表推導比循環遍歷列表快,但 while loop 是最慢的,需要使用一個外部計數器。
使用 cProfile,cStringIO 和 cPickle
一直使用 C 版本的模塊
使用局部變量
局部變量比全局變量,內建類型以及屬性快。
列表和迭代器版本存在 - 迭代器是內存效率和可伸縮性的。使用 itertools
創建生成器以及盡可能使用 yeild,它們比正常的列表方式更快。
http://www.diveinto.org/python3/iterators.html
http://stackoverflow.com/questions/231767/the-python-yield-keyword-explained
讓我繼續下一個層次的第二部分快速優化技巧
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/37301.html
摘要:注本文的原文地址為這個是性能快速優化的第二部分,第一部分請點擊這里。當你寫代碼了,過一遍數據結構,迭代結構,內建和為創建擴展,如有必要。更新是在的范圍之外,這意味著你可以使用這個標準庫來運行多個進程。看下我的的印度演講 注:本文的原文地址為 Quick Python Performance Optimization: Part II 這個是 Python 性能快速優化的第二部...
摘要:鋪墊已了,進入今天的正題,貓薦書系列之五高性能編程本書適合已入門還想要進階和提高的讀者閱讀。書中列舉了兩個慘痛的教訓華爾街公司騎士資本由于軟件升級引入的錯誤,損失億美元公司小時全球中斷的嚴重事故。 showImg(https://segmentfault.com/img/bVbm92w?w=6720&h=4480); 稍微關心編程語言的使用趨勢的人都知道,最近幾年,國內最火的兩種語言非...
摘要:鋪墊已了,進入今天的正題,貓薦書系列之五高性能編程本書適合已入門還想要進階和提高的讀者閱讀。書中列舉了兩個慘痛的教訓華爾街公司騎士資本由于軟件升級引入的錯誤,損失億美元公司小時全球中斷的嚴重事故。 showImg(https://segmentfault.com/img/bVbm92w?w=6720&h=4480); 稍微關心編程語言的使用趨勢的人都知道,最近幾年,國內最火的兩種語言非...
閱讀 654·2021-11-15 11:39
閱讀 2890·2021-10-08 10:04
閱讀 3252·2019-08-30 10:57
閱讀 3015·2019-08-26 13:25
閱讀 1896·2019-08-26 12:14
閱讀 2626·2019-08-23 15:27
閱讀 2988·2019-08-23 15:18
閱讀 1766·2019-08-23 14:26