
538
付録
B
IPython
システム上級編
最も着目すべき値は、
Wall time
で示される実処理時間です
*
1
。これを見ると、
method1
は
method2
の
2
倍以上の時間がかかったことがわかりますが、実際はこの値は厳密な計測とは言えません。仮に何度
かこの
%time
コマンドを実行してみると、毎回結果が変動することがわかるでしょう。この計測をもう
少し正確にするために用意されているのが、マジック関数
%timeit
です。
%timeit
に任意のコマンドを
与えると、自動的に最適と思われる計測回数が選ばれ、各回の計測平均が戻されます。
In [563]: %timeit [x for x in strings if x.startswith('foo')]
10 loops, best of 3: 159 ms per loop
In [564]: %timeit [x for x in strings if x[:3] == 'foo']
10 lo
ops, best of 3: 59.3 ms per loop
この例は一見大したことのない結果のようですが、これから利用していく
Python
標準ライブラリ、
NumPy
、
pandas
や他のライブラリの性能を評価する上で大変重要になってきます。つまり、大規模デー
タの分析に当たっては、ほんの数ミリ秒の違いが大きく積み重なってくるのです!
%timeit
が特に有効な場面は、命令の実行時間のオーダーがマイクロ秒(
10
−
6
秒)、あるいはナノ秒
(
10
−
9
秒)とい ...