试着弄清楚运行这段代码需要多长时间:
import timeit as t
def fib_recursive(n):
if n==0:
return 0
elif n == 1:
return 1
else:
return fib_recursive(n-1) + fib_recursive(n-2)
print fib_recursive(29)
print t.Timer("fib_recursive(29)")
输出如下:
514229 timeit.Timer实例位于0xda28c0
答案 0 :(得分:1)
要扩展thefourtheye的注释(这是正确的),您通常希望将定义函数所需的步骤隔离到timeit
的设置参数中。鉴于您的设置,我会执行以下操作:
import timeit as t
def fib_recursive(n):
if n==0:
return 0
elif n == 1:
return 1
else:
return fib_recursive(n-1) + fib_recursive(n-2)
setup = 'from __main__ import fib_recursive'
t.timeit('fib_recursive(29)', setup=setup)
我将假设您已了解改进此算法的各种技术,并且正在选择测量其速度以仅建立基线。您可以尝试使用number
关键字参数timeit
来控制重复次数。
答案 1 :(得分:1)
使用IPython时,最简单的计时方法是使用magicfunction %timeit
:
%timeit fib_recursive(10)
>>> 10000 loops, best of 3: 70.2 us per loop
答案 2 :(得分:0)
timer = t.Timer("fib_recursive(29)", setup='from __main__ import fib_recursive')
print timer.timeit()
或只是使用timeit.timeit
:
print t.timeit("fib_recursive(29)", setup='from __main__ import fib_recursive')
注意:您需要将import
语句传递给setup
参数。