Last Updated: 2/6/2024, 5:44:57 AM
# 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 は私も使ったことがないので、 この場での名前のみのご紹介で控えさせていただきます。