BlankTar

about | blog | works | photo

python標準搭載のベンチマークモジュール、timeit
結構便利なんですよねー、これ。

たとえば、timeモジュールに含まれているsleep関数の実行にどのくらい時間がかかるか知りたいなら
>>> import timeit
>>> timeit.timeit(stmt='time.sleep(0.1)', setup='import time', number=1)  # 1回だけ実行してみる。
0.09972344867259153
>>> timeit.timeit(stmt='time.sleep(0.1)', setup='import time', number=100)  # 100回実行してみる。
10.05719352328316
こんな感じ。

1つ注意しなきゃならないのが、値の大きさ。100回試したら、100回分の時間が返ってきます。
つまり、一回の時間を知りたいなら試行回数で割らなきゃいけない
ということに気付かずにあれーなんか遅いなーなんて試行錯誤してましたとさ。あーあ。


ちなみにコンソールからも使うことが出来て、
$ python -m timeit -n 1 -r 1 -s "import time" "time.sleep(0.1)"  # 1回
1 loops, best of 1: 101 msec per loop
$ python -m timeit -n 100 -r 1 -s "import time" "time.sleep(0.1)"  # 100回
100 loops, best of 1: 101 msec per loop
$ python -m timeit -n 1 -r 1 -s "import time" "time.sleep(2)"
1 loops, best of 1: 2 sec per loop
のようになります。
若干精度が低いけど、まあいいんじゃない?

参考: 良いもの。悪いもの。: Python: timeitモジュールを使ってお手軽に実行時間計測
< pythonの__setattr__をオーバーライドしてみたら楽しいかもしれない。 python3.2以降のlru_cacheが素敵すぎて。 >