我最近使用timeit模块对python进行了一个非常简单的性能测试。结果真的让我吃惊:x=x+x消耗的时间大约是x+xy=x+x,的125倍,为什么?!我真的希望有人能给我一些线索,也许我用错了时间?谢谢!
请注意,y=x+x;x=yx=x+x一样慢,x=x+47x+x一样快
测试基本警察()
testcase=“pass”,延时:0.001487秒
testcase=“x=47”,延时:0.002424秒
testcase=“x=94”,延时:0.002423s
testcase=“x=47*2”,延时:0.002423s
testcase=“x+x”,延时:0.003922secs
testcase=“x*2”,延时:0.005307秒
testcase=“x=x+x”,延时:0.497974秒
testcase=“x=x*2”,延时:0.727506秒
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.006327s
testcase=“y=x+x
x=y“,延时:0.499644秒
testcase=“x+x
y=x“,延时:0.004948秒
testcase=“x+x
x=y“,延时:0.005126秒
testcase=“y=10
x=y“,延时:0.003351秒
testcase=“pass”,延时:0.001487秒
我使用的代码:

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()

最佳答案

当你计算了数千次x=x+x时,x会变得非常大。你在测量两个非常大的数字相加所需的时间长度。

关于python - python x = x + x比y = x + x慢120倍?为什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11271965/

10-12 16:37