作者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)
1F:推 yungyuc:python loop 比 C 慢两个 order 是正常的 04/14 05:36
2F:→ yungyuc:因此 numpy 才有卖点 04/14 05:36