作者sbrhsieh (sbr)
看板Python
标题Re: [问题] List扩编的处理速度...
时间Thu Apr 30 02:32:04 2009
※ 引述《keitheis (无)》之铭言:
: 我是用 Python 2.5.4 内附的 timeit
: Python 2.5.4 (r254:67917, Dec 23 2008, 14:57:27)
: [GCC 4.0.1 (Apple Computer, Inc. build 5363)] on darwin
: 不太了解你说 timeit module 的设计是指?
: 只是我原来的 code 本身就有问题: global is evil XD
你原来的测试码的问题出在 timeit 并没有特别对 load module 有额外的处理,
所以你原来的测试码中
import testit statement 尽管最後是在 for loop 里执行,
实际上 load module 的动作并不会重复执行。
後来我也在 Mac OS 10.5.6 上测过你原来的测试码,结果与你原先贴的数据趋势
差不多,我蛮好奇这是跟 Darwin 的记忆体管理有关,还是跟 CPython for Mac 在
list 的实作上跟 CPython for windows 的实作不同有关?
Python 2.5.1 (r251:54863, Jan 13 2009, 10:26:13)
[GCC 4.0.1 (Apple Inc. build 5465)] on darwin
0.00002140 sec/pass
0.00001898 sec/pass
0.00001813 sec/pass
同一个测试码我在 Windows XP sp3, 2G ram + Python 2.5.4 跑过,跑到 t3 测试
那一段就会产生记忆体不足的错误而终止。如果让 t1/t2/t3 分别单独来测试,t2/t3
会比 t1 慢上许多。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.173.139.14
1F:推 keitheis:是啊,应该也可以在run_test中加上reload(testit)解决 04/30 03:02
2F:→ keitheis:但正常应该是不要在 global 中使用 al, bl 的宣告比较 04/30 03:09
3F:→ keitheis: 多打了^^^^ 04/30 03:10
4F:→ keitheis:orz 04/30 03:10