我试图用时间来记录这个函数的运行时间,但我认为结果不正确,有时它只会花费0s而且结果不稳定。The first two result is for N=10000, the third one is N=30000
import time
def sumOfN(n):
start=time.time()
theSum=0
for i in range(1,n+1):
theSum=theSum+i
end=time.time()
return theSum,end-start
for i in range(5):
print("Sum is %d required %10.7f seconds"%sumOfN(300000))
答案 0 :(得分:1)
time.time()
返回自纪元以来作为浮动的秒数 点数。请注意,即使时间始终返回为 浮点数,并非所有系统都提供更好的时间 精度超过1秒。虽然此功能通常会返回 非递减值,它可以返回比以前更低的值 如果在两次通话之间设置了系统时钟,则呼叫。
(强调我的)
系统的定时器分辨率似乎不足以正确测量功能的耗用时间。它实际上看起来精度约为0.016,约为1/60秒,这是Windows系统的典型特征。
您的方法有以下两个问题:
time.time()
返回当前时间(如一天中的时间),这可能会因自动调整过程(如NTP)或某人修改过程(手动或通过代码)而有所不同。 使用time.perf_counter()
(或Python中的time.clock()
< 3.3)代替。timeit
模块。