やりたいこと
ソースで速度が遅い場合に、どこの部分がボトルネックとなるかを計測したいとき
関数レベルであると、デコレータつかったり、timeit
利用したりできるけど、
関数内で、処理Aに何秒、処理Bに何秒、...みたいに測定したい場合に利用できるものが欲しかったので作成してみました。
ソース
- https://github.com/komorin0521/python_sandbox/blob/master/python2/timer.py python2のフォルダにもありますが、シェバン以外は全く同じです。
使い方
from timer import Timer
timer = Timer()
timer.start('fileread')
(ファイル読み込み処理)
timer.stop('fileread')
# 指定キー(fileread) の結果が出力される
print(timer.get_result('fileread'))
timer.start('sort')
(ソート処理)
timer.stop('sort')
# 計測したキー全ての結果が出力される
print(timer.get_all_result())
よければ使ってみてください!
2017年12月19日 追記
show_results
関数を追加しました。
timer = Timer()
timer.start("fileread")
...
timer.stop("fileread")
timer.start("sort")
...
timer.stop("sort")
timer.show_results()
fileread : 4.004
sort : 3.003
という感じにちゃんとtimer.start
とした順番で表示されるようにしてます。