Python で実行時間を計測したい

実行時間を計測したいなと思ったとき、実は次の2つの用途に分けられるかなと思います。



ベンチマーク
同じ処理を行う複数のコードを比較して、 どれ  が速いかを知りたい。



プロファイル
コードを細かく区切って計測して、 どこ  が遅いかを知りたい。



ここでは 5 つの方法を紹介します。1, 2, 3 はベンチマークを取るツール。4, 5 はプロファイルを取るツールです。

項番 名称 説明
1 OS の time
コマンド
スクリプト全体の時間
とっても簡単でオススメ!
2 time
モジュール
スクリプトの一部の時間
自分が書いたコードのなかで
特定のコードの時間を
計測したい時に使う。
3 timeit
モジュール
スクリプト全体の時間
正確な時間を計測したい時に使う。
ただし 正確だけどすこし面倒くさい。
4 cProfile
モジュール
関数ごとの時間
遅い関数を特定したい時に使う。
5 line_profiler
モジュール
行ごとの時間
遅い行を特定したい時に使う。

こんなのがあるんだなー、くらいに読み飛ばしていただければと思います。 ベンチマークを取る際は、1 の OS のコマンドで十分だと思います。 2, 3 は面倒です。特に 3 の timeit は、計測するコードを文字列にしないといけないので、 無理をしてまで使う必要はないかなと思います。

プロファイルを取る際は、とりあえず cProfile を使ってみた方が理解が早いと思います。 説明とか読むと複雑ですが、単純に関数ごとの時間を計測してくれているだけです。

また項番 5 の line_profiler は私も使ったことがないので、 この場での名前のみのご紹介で控えさせていただきます。

Last Updated: 8/8/2019, 8:53:30 PM