我正在一个项目上,我发现有些奇怪(至少对我而言)。我有两个几乎相同的功能。
第一个在自身内部调用另一个函数
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,我意识到代码效率低下,我简化了代码以突出我的问题。