Python timeit():実行時間測定の実例付きガイド
Python timeit():実行時間測定の実例付きガイド
Python timeit()は、小さなコードスニペットの実行時間を高精度で測定するための組み込みモジュールです。デフォルトで文を100万回実行し、最速の実行時間を報告するため、異なる実装のパフォーマンス比較に役立ちます。
構文
timeit.timeit(stmt, setup, timer, number)
パラメータ
- stmt – 計測対象のコード。デフォルトは
pass。 - setup –
stmtの前に1回実行されるコード。デフォルトはpass。 - timer – オプションのタイマー関数。モジュールが適切なデフォルトを提供。
- number –
stmtの実行回数。デフォルトは1,000,000。
まずモジュールをインポート:
import timeit
例1 – シンプルな式の計測
基本的な算術演算をテスト:
import timeit
print(timeit.timeit("output = 10*5"))
典型的な出力:
0.06127880399999999
これは100万回実行中の最速時間(秒)を示します。
複数行の計測
セミコロンで文を区切るか、トリプルクォート文字列で渡すことで複数行コードを処理可能。
セミコロン使用
import timeit
print("実行時間:", timeit.timeit(stmt="a=10;b=10;sum=a+b"))
出力:
実行時間: 0.137031482
トリプルクォート文字列使用
import timeit
import_module = "import random"
testcode = '''
def test():
return random.randint(10, 100)
'''
print(timeit.repeat(stmt=testcode, setup=import_module))
出力:
実行時間: 0.182619178
主要メソッド
- timeit.default_timer() – 利用可能な最高分解能で現在時刻を返す
- timeit.repeat(stmt, setup, timer, repeat, number) –
timeit()を繰り返し実行し、各実行の最速時間リストを返す
例1 – timeit.timeit()使用
# ランダム整数を返す関数をテスト
import timeit
import_module = "import random"
testcode = '''
def test():
return random.randint(10, 100)
'''
print(timeit.timeit(stmt=testcode, setup=import_module))
出力:
0.46715912400000004
例2 – default_timer()使用
# 単一関数呼び出しを計測
import timeit
import random
def test():
return random.randint(10, 100)
starttime = timeit.default_timer()
print("開始時刻:", starttime)
test()
print("経過時間:", timeit.default_timer() - starttime)
出力:
開始時刻: 0.220261875 経過時間: 0.0004737320000000045
例3 – timeit.repeat()使用
# テストを5回実行し、各ベストタイムを取得
import timeit
import_module = "import random"
testcode = '''
def test():
return random.randint(10, 100)
'''
print(timeit.repeat(stmt=testcode, setup=import_module, repeat=5))
出力:
[0.43638873, 0.5040939680000001, 0.5069179909999999, 0.3943449330000002, 0.3546886979999999]
各エントリは100万回実行の1イテレーションあたりの最速時間です。
コマンドライン使用
timeitをシェルから直接呼び出し可能:
python -m timeit [-n N] [-r N] [-s S] [-t] [-c] [-h] [code statement ...]
-n N– 文のループ回数-r N– タイミングプロセス全体の繰り返し回数-s S– 計測前の1回限りセットアップコード-t–time.time()をタイマーとして使用-c–time.clock()をタイマーとして使用-h– ヘルプ表示
例
C:\pythontest>python -m timeit -s 'text="hello world"' 20000000 loops, best of 5: 13.1 nsec per loop
REPLからtimeitを呼ぶ便利な方法も:
import timeit
print("実行時間:", timeit.timeit(stmt="a=10;b=10;sum=a+b"))
出力:
実行時間: 0.15048536300000137
timeit()がPythonコード計測の最良ツールである理由
- 文を多数回実行(デフォルト100万回)し、最速実行を返すため信頼性の高い推定値が得られる
- 計測中はガベージコレクションを無効化し、結果の歪みを防止
- OSに最適な高精度タイマーを自動選択(Windowsなら
time.clock()、macOS/Linuxならtime.time())
まとめ
timeitモジュールは短いPythonスニペットのベンチマークに不可欠です。パラメータはシンプル:
- stmt – 計測対象コード
- setup – 1回限りのセットアップコード
- timer – オプションのタイマー関数
- number –
stmtの実行回数
正確で再現可能な計測には必ずtimeitを使用してください。
Python
- Pythonで現在時刻とタイムゾーンデータを簡単に取得する
- Pythonのtimeモジュールをマスター:関数、構造体、実践例
- Pythonのtime.sleep()をマスター:ベストプラクティス、マルチスレッド、実例
- Python str.count()マスター:文字と部分文字列のカウント実例集
- Python format()文字列を明確な例でマスター
- Python String.find()メソッド完全ガイド:構文、例、代替手法
- Pythonラムダ関数をマスターする:実例とベストプラクティス
- Python round()関数を実例で徹底解説
- Python map()関数をマスター:構文、例、ベストプラクティス
- Python collections.Counter:効率的なカウント、更新、演算操作
- Python type()とisinstance()の理解:実例付き解説