Pythonで`timeit`モジュールを使ってコードの実行時間を計測する方法

この記事では、Pythonの`timeit`モジュールを用いてコードの実行時間を計測する方法について解説します。具体的なコード例とその詳細な解説、さらには応用例を2つ紹介します。

目次

はじめに

プログラムのパフォーマンスを向上させるには、まず現状の処理速度を把握することが重要です。Pythonの`timeit`モジュールは、コードの実行時間を簡単に計測するための非常に便利なツールです。

基本的な使い方

`timeit`モジュールの最も基本的な使い方は、`timeit()`関数を用いる方法です。この関数は、指定されたPythonのステートメント(コード片)を実行し、その平均実行時間を返します。

基本的なコード例

import timeit

# 実行時間を計測するコード
def sample_code():
  return sum(range(1, 100000))

# timeit関数で実行時間を計測
result = timeit.timeit('sample_code()', globals=globals(), number=100)
print(f"平均実行時間: {result / 100}秒")

コードの詳細解説

– `import timeit`: `timeit`モジュールをインポートします。
– `def sample_code()`: 実行時間を計測したい関数を定義します。ここでは1から99,999までの和を求める関数です。
– `timeit.timeit()`: `timeit()`関数を呼び出します。第一引数には計測したいコードのステートメント(文字列形式)を指定します。
– `globals=globals()`: グローバルな名前空間を指定します。
– `number=100`: 実行回数を指定します。ここでは100回実行します。
– `result / 100`: 実行時間を平均して出力します。

応用例1: インラインでの計測方法

コマンドラインで素早くコードの実行時間を計測したい場面もあるでしょう。その場合は`python -m timeit`というコマンドを使います。

コマンドラインでの計測コマンド

# コマンドラインで以下のように入力します
python -m timeit "sum(range(1, 100000))"

コマンドの詳細解説

このコマンドを実行すると、`sum(range(1, 100000))`の計算が何回か行われ、その平均実行時間が出力されます。コマンドラインで素早く実行時間を計測したい場合には非常に便利です。

応用例2: セットアップ処理を含めた計測

初期セットアップが必要な場合、`setup`引数を使ってその処理を行います。

セットアップを含むコード例

# セットアップ処理としてリストを作成
setup_code = 'my_list = list(range(1, 100000))'

# 実行時間を計測するコード
target_code = '''
result = 0
for i in my_list:
  result += i
'''

# timeit関数で実行時間を計測
result = timeit.timeit(target_code, setup=setup_code, number=100)
print(f"平均実行時間: {result / 100}秒")

コードの詳細解説

– `setup_code`: セットアップ用のコードを文字列として定義します。
– `target_code`: 実行時間を計測したい本体のコードを文字列として定義します。
– `setup=setup_code`: `timeit()`関数にセットアップ用のコードを指定します。

まとめ

`timeit`モジュールは、Pythonでコードの実行時間を効率よく計測するための強力なツールです。基本的な使い方からコマンドラインでの簡易な計測、セットアップ処理を含む計測まで、多くのケースで役立ちます。この記事を参考に、あなたのコードのパフォーマンスチューニングに活用してください。

コメント

コメントする

目次