pythonで処理時間計測

pexels-photo-1186851.jpeg

python環境において処理に要する時間を計測する方法についてまとめています。

処理開始前時刻と開始後時刻の差分を計算する方法

timeパッケージを利用し,処理が開始される前の時刻と開始後の時刻の差分を求めることで処理時間を計算します。

import time

# 処理時間を計測したい処理
def func(n):    
    result = 0
    for i in range(n):
        result += i

start_time = time.time() # 処理開始前のシステム時刻を取得
result = func(100000) # 処理時間を計測したい処理を実行
elapsed_time = time.time() - start_time # 処理終了後のシステム時刻と開始前のシステム時間の差分を取得 
print("elapsed time:{:.10f}".format(elapsed_time) + "sec") # 処理時間の表示
elapsed time:0.0069541931sec

Ipython / Jupyter 向け

  • マジックコマンド「%time」「%timeit」を利用することで処理時間を計測できます。
    • %time:処理を一度実行し,処理時間を返す
    • %timeit:処理を複数回実行し,平均処理時間と標準偏差を返す。処理時間にばらつきがある場合はこちらの利用を推奨。

処理を一度実行して処理時間を返す

処理時間を計測したい処理と同一行に「%time」を記述。

%time func(100000)
Wall time: 4.99 ms

セル全体の処理時間を計算する場合


処理時間を計測したいセルの先頭に「%%time」を記述。

%%time

func(100000)
func(100000)
Wall time: 9.97 ms

処理を複数回繰り返して平均時間を返す

処理時間を計測したい処理と同一行に「%timeit」を記述

%timeit func(100000)
5.33 ms ± 534 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

セル全体の処理時間を計算する場合

処理時間を計測したいセルの先頭に「%%timeit」を記述

%%timeit

func(100000)
func(100000)
10.2 ms ± 611 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

「%timeit」の繰り返し回数の制御

  • -n:ループ回数を指定
  • -r:ループの繰り返し回数を指定
%%timeit -n 50 -r 5 

func(100000)
func(100000)
10.2 ms ± 654 µs per loop (mean ± std. dev. of 5 runs, 50 loops each)

コメント