为什么timeit模块花费的时间比代码在python中快速生成输出要长?

时间:2013-11-12 18:20:34

标签: python function timeit

这是计算斐波那契的代码

import timeit
counter=0
def fibhelper(n):
  global counter
  counter+=1
  if n==0 :
     return 0
  elif n==1:
     return 1
  else:
     return fibhelper(n-1)+fibhelper(n-2)

print fibhelper(20)
print "Total function calls-- ",counter
t1=timeit.Timer('fibhelper(20)',"from __main__ import fibhelper")
y=t1.timeit()
print "normal method in secs: ",y

输出是:

6765
Total function calls-- 21891

立即出现,但仍在计算y。为什么是这样?在快速评估function时,为什么timeit的{​​{1}}需要更长的时间?

1 个答案:

答案 0 :(得分:3)

timeit的默认参数包括:number=1000000

引用timeit的文档:

  

...使用timeit()执行时运行number方法。

因此,预计需要100万倍。