目次
概要
Python の time
モジュールは Jupyter Notebook のマジックコマンドで、コードの実行時間を計測する方法について紹介します。
time モジュール
計測したい範囲の前後で time.time()
を実行し、その差分をとることで計測します。
In [1]:
0.796s 796ms 796409μs
with コンテキストで計測が行えるサンプルを紹介します。
In [2]:
sum: 0.7450883388519287s
Jupyter Notebook のマジックコマンド
%%time – セルの実行時間
%%time
をセルの先頭に入れると、そのセルの処理を1回実行し、実行時間を計測します。
In [3]:
CPU times: user 14 µs, sys: 0 ns, total: 14 µs Wall time: 17.4 µs
全体の実行時間を知るには Wall time
を見ればよいです。
- CPU times: CPU時間
- user: ユーザースペースで CPU が利用された時間
- sys: カーネルスペースで CPU が利用された時間
- total: CPU が利用された時間の合計 (total = user + sys)
- Wall time: 全体の実行時間
%time – 行の実行時間
%time
を行の先頭に入れると、その行の処理の実行時間を計測します。
In [4]:
CPU times: user 4 µs, sys: 0 ns, total: 4 µs Wall time: 5.72 µs CPU times: user 4 µs, sys: 0 ns, total: 4 µs Wall time: 5.96 µs CPU times: user 3 µs, sys: 1e+03 ns, total: 4 µs Wall time: 5.48 µs CPU times: user 4 µs, sys: 0 ns, total: 4 µs Wall time: 5.48 µs CPU times: user 3 µs, sys: 0 ns, total: 3 µs Wall time: 5.72 µs
%%timeit – セルの実行時間
%%timeit
を先頭に入れると、そのセルの処理を複数回実行して、実行時間を計測します。
In [5]:
6.64 µs ± 3.55 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
上記の見方ですが、100000 ループ * 7回を実行した結果の平均が 6.87us、標準偏差が 257ns と解釈します。
マジックコマンドでは以下の引数を設定できます。
-r<R>
: ループ回数 (デフォルト: 3)-t
: time.time() を wall time の計測に使用します。(Unix のデフォルト)-c
: time.clock() を wall time の計測に使用します。(Windows のデフォルト)-p<P>
: 時間を表示する際の有効数字 (デフォルト: 3)-q
: 計測結果を出力しない
In [6]:
6.7 µs ± 2.8 ns per loop (mean ± std. dev. of 3 runs, 100000 loops each)
%timeit – 行の実行時間
%timeit
を行の先頭に入れると、その行の処理を複数回実行して、実行時間を計測します。
In [7]:
882 ns ± 0.867 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each) 874 ns ± 0.202 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each) 876 ns ± 0.363 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each) 876 ns ± 0.486 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each) 875 ns ± 0.686 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
コメント