python x = x + x比y = x + x慢120倍!为什么?

Wan*_*ang 2 python performance

我最近使用timeit模块对python进行了非常简单的性能测试.结果真的让我目瞪口呆:由所消耗的时间x=x+x大约是125倍x+x还是y=x+x,为什么?我真的希望有人会给我一些关于此的线索,也许我使用了timeit错误?谢谢!

请注意,y=x+x;x=y它和x=x+x...... 一样慢但是x=x+47速度一样快x+x

testBasicOps()

testcase ="pass",时间流逝:0.001487secs

testcase ="x = 47",时间流逝:0.002424秒

testcase ="x = 94",时间流逝:0.002423秒

testcase ="x = 47*2",时间流逝:0.002423秒

testcase ="x + x",时间流逝:0.003922秒

testcase ="x*2",时间流逝:0.005307secs

testcase ="x = x + x",时间流逝:0.497974secs

testcase ="x = x*2",时间流逝:0.727506secs

testcase ="x = x + 47",时间流逝:0.005770秒

testcase ="x = 47 + x",时间流逝:0.004442秒

testcase ="x + = x",时间流逝:0.498920secs

testcase ="y = x + x",时间流逝:0.004102secs

testcase ="y = x*2",时间流逝:0.006327secs

测试用例="Y = X + X

x = y",时间流逝:0.499644secs

测试用例="X + X3

y = x",时间流逝:0.004948秒

测试用例="X + X3

x = y",时间流逝:0.005126secs

测试用例="Y = 10

x = y",时间流逝:0.003351秒

testcase ="pass",时间流逝:0.001487secs

我用过的代码:

import timeit
import numpy as npy
def testBasicOps():
    timeitSetup="""
x=47
y=0
"""
    testCases=['pass','x=47',\
               'x=94','x=47*2'\
               ,'x+x','x*2'\
               ,'x=x+x','x=x*2'\
               ,'x=x+47','x=47+x'\
               ,'x+=x','y=x+x'\
               ,'y=x*2','y=x+x\nx=y'\
               ,'x+x\ny=x','x+x\nx=y'\
               ,'y=10\nx=y']
    minT=[]
    tests=[]
    for i in testCases:
        tests.append(timeit.Timer(i,setup=timeitSetup))
        minT.append(npy.mean(tests[-1].repeat(10,int(1e5))))
        print 'testcase=\"%s\", time lapse:%fsecs'%(i,minT[-1])

def main():
    print "#"*10
    print "testBasicOps()"
    testBasicOps()

if __name__ == '__main__':
    main()        
Run Code Online (Sandbox Code Playgroud)

cas*_*evh 11

当你计算x=x+x成千上万次时,x变得非常大.您正在测量添加两个非常大的数字所需的时间长度.