pythonによる関数の実行時間測定[timeitモジュール]

奇数判定の処理を書く時って、n % 2 == 0で書いてたんですが、とあるサンプルコードで n & 1 == 0で書かれていたコードがあって、やっぱりbit演算のほうが、処理速いのかなー、と思い、pythonで実行速度を計測してみました。

そのときに使ったtimeitモジュールのメモ。

datetime.clockの差分を取るものが、サンプルでは多いのですが、関数単位で処理時間取りたいときは、pythonが標準で提供しているtimeitモジュールを利用するのが良さそうです。

 

その時のコード。以下が測定対象のモジュール(ファイル名 evencheck.py)

10万までの整数を偶数か判定する、だけ(出力もない)の関数を2パターン、余剰計算とbit演算するパターンで作成しました。

ここにある、関数2つの処理速度を計測するためのモジュールを別途書きます

ポイントはtimeitモジュールをインポートすること。

インスタンス生成時の引数は

第一引数が 関数実行する際のコード(引数がある関数もここで指定できます)

第二引数が第一引数を実行するためのインポート文(最初に書いたコードをインポートすればOK)

 

実際にテストしている部分は t.timeit()の箇所になります。ここは引数を渡せば、その回数だけ、渡さなければ100万回実行した時間を計測します。

テスト実行時に関数単位で処理時間をテストしたいときなんかはこれを使うといいかもしれませんね。

公式リファレンス

 

ちなみに、当然かもしれませんが、測定結果はbit演算で奇数判定したほうが、若干速いです。(1万回実行しても、本当にわずかな差)

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です