1. ホーム
  2. パイソン

[解決済み】timeitモジュールの使い方

2022-03-24 13:18:03

質問

のコンセプトは理解しています。 timeit がありますが、私のコードでどのように実装すればよいのかわかりません。

2つの関数を比較するには、例えば insertion_sorttim_sort である。 timeit ?

解決方法は?

方法 時間 は、セットアップコードを一度実行してから、一連のステートメントを繰り返し呼び出すという仕組みになっています。 ですから、もしソートをテストしたいのであれば、インプレースソートの1パスがすでにソートされたデータで次のパスに影響しないように、ある程度の注意が必要です(もちろん、そうすると ティムソート なぜなら、データがすでに部分的に順序付けされているときに、最高のパフォーマンスを発揮するからです)。

ここでは、ソートのテストを設定する例を示します。

>>> import timeit

>>> setup = '''
import random

random.seed('slartibartfast')
s = [random.random() for i in range(1000)]
timsort = list.sort
'''

>>> print min(timeit.Timer('a=s[:]; timsort(a)', setup=setup).repeat(7, 1000))
0.334147930145

この一連の記述は、ソートされていないデータを毎回新しくコピーしていることに注意してください。

また、測定スイートを7回実行し、ベストタイムだけを残すというタイミングテクニックにも注目です。これは、システム上で実行されている他のプロセスによる測定の歪みを減らすのに非常に役立ちます。

以上が、timeitを正しく使うためのコツです。 お役に立てれば幸いです:-)