edo1z blog

プログラミングなどに関するブログです

Python3 - timeitを使ってコマンドライン上で関数の実行速度を計る

コマンドラインで実行できるので、プログラムに計測用のコードを書かなくてよくて便利。

timeit — 小さなコード断片の実行時間計測

計測方法

自分の環境だと、実行したいpythonファイル(hoge.py)がおいてあるディレクトリで、下記のようにやると動きます。(hoge.pyのtest関数の実行速度を計測したい場合)

$ python -m timeit 'import hoge' 'hoge.test()'

計測結果の見方

試しに、ここで作成した素数を出すコードの速度を計測してみます。ファイル名は、eratos.pyです。

$ python -m timeit 'import eratos' 'eratos.prime(100000)'

結果

100 loops, best of 3: 17.5 msec per loop

結果の見方がややこしい。 参考:ライブラリ:timeit

-nは、1試行あたりの実行回数。-rは試行回数らしい。下記のように指定できる。

$ python -m timeit -n 10 -r 5 'import eratos' 'eratos.prime(100000)'
10 loops, best of 5: 17.4 msec per loop

上記の場合は、処理を10回連続で実行したときの時間を5回計測し、そのうちの最小時間を返してくれているらしい。デフォルトだと連続で100回実行して、ランダムなタイミング(?)で3回だけ時間を計測して、3回のうち一番時間が短かった結果を返してくれているということかな?まあ何しろこれで実行時間が簡単に計測できるので便利です。

時間の単位は、下記になります。

単位名単位
ナノ秒1,000,000,000nsec(ns)10の-9乗 s
マイクロ秒1,000,000usec(µs)10の-6乗 s
ミリ秒1,000msec(ms)10の-3乗 s
1sec(s)1s