作者sbrhsieh (sbr)
看板Python
標題Re: [心得] 結合Python 與 C(C++) 的優點
時間Tue Apr 14 02:09:14 2009
※ 引述《KSJ (阿真)》之銘言:
: 我把上面二個分別取為usePython1 跟usePython2 (原來的是usePython 跟useC)
: 結果如下:
: (14.906000137329102, 100000020)
: (26.609000205993652, 100000020)
: (100000020, 0.4849998950958252) <==這是我本來的程式 有輸出i值
: 至於 原本的usePython 跑太久沒出來我就restart了(用家裡的p4跑的)
還是跟 C 實作差了有幾十倍。至於使用 xrange 會比自己使用 local variable 來得
快,我有點意外,本來認為使用 xrange 在 for loop 裡,會多一個 method call
的成本(call xrange object 產生的 generator object 的 next method),應該會比
較慢一點。
iteration 數很大時使用 range 的缺點,除了配置/釋放大量記憶體花費的時間外,
如果實體記憶體不足,使用到了虛擬記憶體在效率上影響更大(使用到硬碟)。
例如原本的 usePython function,range(100000000) 建構的 list 至少要用掉
800 MBytes,如果你放在實體記憶體只有 512 Mb or 256 Mb 的機器上跑,更是讓人
受不了。
況且為了 iteration 使用了這麼多記憶體在很多情況來說都是令人無法容忍,所以
Python 3.0 才把 map/filter/zip 的語意改成產生 generator。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.173.131.34
※ 編輯: sbrhsieh 來自: 218.173.131.34 (04/14 02:14)
推 yungyuc:python loop 比 C 慢兩個 order 是正常的 04/14 05:36
→ yungyuc:因此 numpy 才有賣點 04/14 05:36