スクリプト

プログラムした関数の実行時間を測る簡単な方法

ここではipythonの対話シェル上で、計算の実行時間を測る方法を記載します。
ipythonの対話シェルで

%timeit (関数名)

で計測できます。
それだけです。

例えば

In [2]: %timeit 5**100                                                                                                   
323 ns ± 3.37 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

5の100乗の計算は平均323 ns(10の-6乗 秒です)

In [3]: def test(): 
   ...:     A, B = range(1000), range(1000) 
   ...:     for i in A: 
   ...:         for j in B: 
   ...:             _ = i * j 
   ...:     return() 
   ...:                                                                                                                  

In [4]: %timeit test()                                                                                                   
40 ms ± 771 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)

100万回かけ算をやる関数を書いて、計測すると
40 msです。

この%timeitというのはipythonに入っている
ビルドインマジックコマンド
というものです。

loopとrunsというコメントが出てきますが、

n回のloopを実行して平均と誤差を計算して、
そのloopをr回行ってそのベストをとります。

デフォルトではnは結果が安定するまで行い、
rは7回行うことになっています。

これらは%timeitのあとに記載すると指定できます。

In [4]: %timeit -n 5 test()                                                     
44.5 ms ± 3.82 ms per loop (mean ± std. dev. of 7 runs, 5 loops each)

In [5]: %timeit -n 5 -r 10  test()                                              
41.1 ms ± 3.05 ms per loop (mean ± std. dev. of 10 runs, 5 loops each)

In [7]: %timeit -n 1 -r 1  test()                                               
72.6 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)

1にすると当然標準誤差は0になりますが、値がけっこうかわりますね。

参考 Built-in magic commandas -IPython