以下のコードを timeit() の外で実行すると、瞬時に完了するように見えます。ただし、 timeit() 関数内で実行すると、はるかに時間がかかります。なんで?
>>> import timeit
>>> t = timeit.Timer("3**4**5")
>>> t.timeit()
16.55522028637718
使用: Python 3.1 (x86) - AMD Athlon 64 X2 - WinXP (32 ビット)
このtimeit()
関数はコードを何度も実行し (デフォルトは 100 万回)、タイミングの平均を取ります。
コードを 1 回だけ実行するには、次のようにします。
t.timeit(1)
しかし、それは歪んだ結果をもたらします - それは正当な理由で繰り返されます。
ループごとの繰り返し時間を取得するには、結果をループ数で割ります。100 万が多すぎる場合は、繰り返し回数に小さい値を使用します。
count = 1000
print t.timeit(count) / count
timeit はデフォルトで 100 万回実行するためです。ポイントは、マイクロ ベンチマークを実行することです。短いイベントの正確なタイミングを取得する唯一の方法は、それらを何度も繰り返すことです。
docsによると、Timer.timeit() はデフォルトでコードを 100 万回実行します。このデフォルトを変更するには、「number」パラメーターを使用します。
t.timeit(number=100)
例えば。
Timeitはデフォルトで 100 万回のループを実行します。
操作順序の問題もある可能性があります: (3**4)**5 != 3**4**5
。