19

以下のコードを timeit() の外で実行すると、瞬時に完了するように見えます。ただし、 timeit() 関数内で実行すると、はるかに時間がかかります。なんで?

>>> import timeit
>>> t = timeit.Timer("3**4**5")
>>> t.timeit()
16.55522028637718

使用: Python 3.1 (x86) - AMD Athlon 64 X2 - WinXP (32 ビット)

4

4 に答える 4

32

このtimeit()関数はコードを何度も実行し (デフォルトは 100 万回)、タイミングの平均を取ります。

コードを 1 回だけ実行するには、次のようにします。

t.timeit(1)

しかし、それは歪んだ結果をもたらします - それは正当な理由で繰り返されます。

ループごとの繰り返し時間を取得するには、結果をループ数で割ります。100 万が多すぎる場合は、繰り返し回数に小さい値を使用します。

count = 1000
print t.timeit(count) / count
于 2009-08-10T23:12:42.390 に答える
6

timeit はデフォルトで 100 万回実行するためです。ポイントは、マイクロ ベンチマークを実行することです。短いイベントの正確なタイミングを取得する唯一の方法は、それらを何度も繰り返すことです。

于 2009-08-10T23:13:25.943 に答える
4

docsによると、Timer.timeit() はデフォルトでコードを 100 万回実行します。このデフォルトを変更するには、「number」パラメーターを使用します。

t.timeit(number=100)

例えば。

于 2009-08-10T23:18:12.970 に答える
2

Timeitはデフォルトで 100 万回のループを実行します。

操作順序の問題もある可能性があります: (3**4)**5 != 3**4**5

于 2009-08-10T23:18:49.303 に答える