0

このコードの実行にかかる時間を計算しようとしています:

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 0xda28c0 の timeit.Timer インスタンス

4

3 に答える 3

2

IPython を使用する場合、タイミングの最も簡単な方法は magicfunction を使用することです%timeit

%timeit fib_recursive(10)
>>> 10000 loops, best of 3: 70.2 us per loop
于 2014-02-06T04:45:04.167 に答える
1

thefourthey のコメント (正しい) を拡張するには、通常、関数を定義するために必要な手順を のセットアップ パラメーターに分離する必要があります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て、繰り返し回数を制御できます。

于 2014-02-06T04:33:24.687 に答える
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引数に渡す必要があります。

于 2014-02-06T04:30:21.080 に答える