プログラミングの用語一覧へ
このページの目次

time.perf_counterとは?

読み方:time.perf_counter

最終更新:2026/08/18

3秒でわかる

処理にかかった時間を測るための Python の高精度タイマー。時刻の補正に影響されないので、性能改善の前後比較で使われます。

もう少し詳しく

どういうものか

time.perf_counter() は、ある基準点からの経過秒数を float で返す関数です。基準点がいつなのかは決まっておらず、返ってきた数値そのものには意味がありません。2回呼んで引き算し、その差だけを使います。

利用できる中で最も分解能の高いタイマーが選ばれるため、ミリ秒よりずっと細かい差も測れます。

なぜ必要か

time.time() は壁掛け時計の時刻を返します。時刻は NTP による同期や夏時間の切り替えで補正されるので、測っている最中に巻き戻り、経過時間がマイナスになることがあります。処理時間の計測でほしいのは「一定の速さで進み続けるカウンタ」であり、それを保証するのが perf_counter です。

具体例

改善の前後を同じ条件で測り、数字で比べます。

import time def measure(fn, *args): start = time.perf_counter() result = fn(*args) elapsed = time.perf_counter() - start print(f"{fn.__name__} took {elapsed:.6f} s") return result def slow(n): return sum([i * i for i in range(n)]) def fast(n): return sum(i * i for i in range(n)) measure(slow, 2_000_000) measure(fast, 2_000_000)

短い処理を1回だけ測ると、その瞬間のゆらぎに埋もれます。マイクロ秒単位のコードは timeit で何万回か繰り返してください。

つまずきやすいところ

  • 返り値をそのまま日時として表示する。起点は不定なので、時刻としては読めません

  • CPU が働いた時間だと思い込む。待ち時間も含めた実時間を返すので、通信待ちやスリープも加算されます。CPU 時間がほしいなら time.process_time です

  • 1回の計測で結論を出す。初回はキャッシュが冷えていて、2回目以降と大きく差が出ます

  • 浮動小数の丸めが気になる場面で使う。整数のナノ秒がほしいときは time.perf_counter_ns を使います
  • 似た用語との違い

    関数測るもの巻き戻り
    time.perf_counter実時間。最も高精度しない
    time.time壁時計の時刻する
    time.monotonic実時間。粗くてよい用途しない
    time.process_timeプロセスの CPU 時間しない


    覚え方

    perf は performance の略で、性能測定のための時計です。時刻を知りたいなら time.time、速さを知りたいなら perf_counter と分けます。

    知識のつながり

    サイドバーと同じ推奨ルート・関連語を、まとめて確認できます。

    現在地time.perf_counterプログラミング

    LEARN BY DOING

    この用語を、教材で使ってみる

    直接関連する編と、その編を含むコースです。用語だけで終わらず、ブラウザ上で実際に手を動かせます。

    このコースが入っている学習分野

    Pythonコースの全編を見る