你如何使用timeit来计算一个函数运行多长时间?

时间:2014-02-06 04:17:21

标签: python timer 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)
print fib_recursive(29)
print t.Timer("fib_recursive(29)")

输出如下:

514229 timeit.Timer实例位于0xda28c0

3 个答案:

答案 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)

使用timeit.Timer.timeit

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参数。