Python计算的运行时间结果不正确

时间:2016-04-01 14:33:53

标签: python

我试图用时间来记录这个函数的运行时间,但我认为结果不正确,有时它只会花费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))

1 个答案:

答案 0 :(得分:1)

根据the Python manual

  

time.time()

     

返回自纪元以来作为浮动的秒数   点数。请注意,即使时间始终返回为   浮点数,并非所有系统都提供更好的时间   精度超过1秒。虽然此功能通常会返回   非递减值,它可以返回比以前更低的值   如果在两次通话之间设置了系统时钟,则呼叫。

(强调我的)

系统的定时器分辨率似乎不足以正确测量功能的耗用时间。它实际上看起来精度约为0.016,约为1/60秒,这是Windows系统的典型特征。

您的方法有以下两个问题:

  • time.time()返回当前时间(如一天中的时间),这可能会因自动调整过程(如NTP)或某人修改过程(手动或通过代码)而有所不同。 使用time.perf_counter()(或Python中的time.clock()< 3.3)代替
  • 您正在测量一次执行该功能。由于垃圾收集,字节码优化以及Python等其他语言怪癖的非确定性,这可能会给您带来非常错误的结果。您应该查看timeit模块。