Python:两个简单的函数,为什么第一个比第二个要快

时间:2019-03-13 11:22:29

标签: python optimization

我正在一个项目上,我发现有些奇怪(至少对我而言)。我有两个几乎相同的功能。

第一个在自身内部调用另一个函数

def sumnew(i): 
    mysum=0
    for j in range(1,i+1):
            mysum=mysum+1
    return  mysum


counter=5000        
start=datetime.datetime.now() 
numberofiterations=0
for i in range (1,counter+1):
            numberofiterations=numberofiterations+ sumnew(i)


print ("the number of iteration is :" + str(numberofiterations)) 
print ("calculation time: " + str((datetime.datetime.now()-start).total_seconds()) + " seconds")

迭代次数是:12502500 计算时间:0.525秒

第二个代码将整个代码保存在一个函数中。

counter=5000        
start=datetime.datetime.now() 
numberofiterations=0
for i in range (1,counter+1):
    mysum=0
    for j in range(1,i+1):
            mysum=mysum+1
    numberofiterations=numberofiterations+mysum



print ("the number of iteration is :" + str(numberofiterations)) 
print ("calculation time: " + str((datetime.datetime.now()-start).total_seconds()) + " seconds")

迭代次数是:12502500 计算时间:0.91秒

我本以为第一个功能会慢一些,但似乎快了两倍左右,你知道为什么吗?

感谢分享您的智慧!

P.S,我意识到代码效率低下,我简化了代码以突出我的问题。

0 个答案:

没有答案