101
ChanneW 2014-10-19 22:30:08 +08:00
|
102
ChanneW 2014-10-19 22:32:10 +08:00
pypy 的结果还是让人很欣慰的, 这些年没白搞啊. 速度差不多, 统计方法不精确.
|
103
ChanneW 2014-10-19 22:55:54 +08:00
没人看一眼 ruby 么?
ruby plus.rb sum : 50000005000000 , use time : 0.370955077 |
104
ChanneW 2014-10-19 22:59:08 +08:00
汗, 打错了 , 吓人
ruby plus.rb sum : 500000000500000000 , use time : 37.145211624 |
105
msg7086 2014-10-20 07:09:25 +08:00 1
@lushl9301 对于完全没有优化代码,你说的基本正确。
从汇编角度来说,数字存储在内存中,要加一的时候,先要从内存里mov到寄存器,然后复制一份寄存器数据,把原始寄存器里的值add常数1,然后再mov回内存,最后返回拷贝寄存器里的值。 比如 mov ecx, DWORD PTR [ESI] mov eax, ecx add ecx, 1 # or # inc ecx mov DWORD PTR [ESI], ecx 但是如果加上了哪怕一点点优化,就会变成 # ecx contains variable i inc ecx 这已经是一个数量级的优化了。 |
106
ToughGuy 2014-10-20 10:10:04 +08:00
~# time python -c 'sum(xrange(1, 1000000001))'
real 0m5.378s user 0m5.382s sys 0m0.000s ~# time pypy -c 'sum(xrange(1, 1000000001))' real 0m0.873s user 0m0.865s sys 0m0.008s 用内建函数计算也差不到哪里去吧。 |