Copy & Paste Engineer

【Google Colab】%%timeと%%timeitの使い方と違いを解説

【Google Colab】%%timeと%%timeitの使い方と違いを解説

Google Colabには、コードの実行時間を測定できる便利なマジックコマンドとして%%time%%timeitがあります。これらを使うことで、コードの実行速度を簡単に把握し、効率化を図ることができます。

この記事では、これら2つのマジックコマンドの違いや具体的な使い方、そしてオプションの設定方法について解説します。


%%timeとは?

%%timeは、特定のコードブロックを1回実行し、その実行時間を計測するマジックコマンドです。主に、処理がどのくらい時間を要するのかを確認したいときに使います。

サンプルコード

以下は、リストに値を追加する処理の実行時間を測定する例です。

%%time
# リストに1から100万までの数字を追加する処理
large_list = []
for i in range(1, 1000001):  # 1から100万までループ
    large_list.append(i)     # リストに値を追加

実行結果

CPU times: user 87 ms, sys: 12 ms, total: 99 ms
Wall time: 98 ms

この結果から、リスト作成処理が約98ミリ秒かかったことがわかります。


%%timeitとは?

%%timeitは、コードブロックを複数回実行して、その平均実行時間と標準偏差を測定するマジックコマンドです。主に、短い処理やアルゴリズムの効率性を比較したいときに使います。

サンプルコード

以下は、リスト内包表記を使ったリスト作成処理の実行時間を測定する例です。

%%timeit
# リスト内包表記を使って1から100万までのリストを作成
large_list = [i for i in range(1, 1000001)]  # 1から100万までの値を一括でリスト化

実行結果

76.8 ms ± 16.5 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)

この結果から、リスト内包表記を用いることで1回のリスト作成処理が平均76.8ミリ秒で完了することがわかります。標準偏差16.5ミリ秒は、実行環境や処理内容によるばらつきを示しています。


%%timeと%%timeitの違い

両者の違いを簡単にまとめます。

特徴 %%time %%timeit
実行回数 1回実行 複数回実行して平均を出す
測定内容 実行時間(Wall timeとCPU time) 平均実行時間と標準偏差
適用シーン 長時間処理やI/O操作のあるコード 短時間処理やアルゴリズムの比較

例えば、ファイルの読み書きやネットワーク通信が含まれる処理には%%timeを、計算処理のパフォーマンス比較には%%timeitを使うと良いでしょう。


%%timeitのオプション設定

%%timeitには、実行回数や繰り返し回数を指定するオプションがあります。これらを活用することで、より正確な計測が可能です。

主なオプション

オプションの使用例

以下は、-n-rオプションを指定して%%timeitを実行する例です。

%%timeit -n 100 -r 5
# リスト内包表記を使って1から100万までのリストを作成
large_list = [i for i in range(1, 1000001)]

この例では、1セットあたり100回のループを行い、それを5セット繰り返して計測します。これにより、計測の精度を高めることができます。


他のオプション

%%timeitにはさらに以下のようなオプションがあります。

サンプルコード

result = %timeit -o -n 10 [i**2 for i in range(1000)]  # 平方数のリスト作成を計測
print("平均実行時間:", result.average)  # 平均実行時間を取得
print("標準偏差:", result.stdev)       # 標準偏差を取得

このコードでは、resultオブジェクトに計測結果が格納されるため、プログラム内でさらなる分析が可能です。


使用時の注意点


まとめ

Google Colabの%%time%%timeitを使えば、Pythonコードの実行時間を簡単に測定できます。特に、%%timeitはオプションを活用することで計測の精度を高めたり、結果を再利用したりすることが可能です。

使い分けのポイント

%%timeitのオプションまとめ

これらのツールを活用して、コードの効率化に役立ててください!