Pythonのtime.perf_counter()関数とは?使い方と実行時間の計測方法を徹底解説
このチュートリアルでは、Pythonの time.perf_counter() メソッドについて詳しく解説します。
time.perf_counter() とは
time.perf_counter() は、高解像度(高精度)なパフォーマンスカウンターの現在値を、秒単位の浮動小数点数(float)で返す関数です。主にプログラムの実行時間を正確に計測するために使用されます。
この関数には、以下のような特徴があります。
- 利用できる中で最も精度の高いクロックを使用する
- 単調に増加し続けるため、システム時刻の変更の影響を受けない
- sleep() 中の待機時間も計測対象に含まれる
- 戻り値の基準点は未定義のため、値そのものではなく差分のみが意味を持つ
基本的な使い方
まずは、最もシンプルな使用例を見てみましょう。
# timeモジュールをインポート import time # パフォーマンスカウンターの現在値を表示 print(time.perf_counter())
出力結果
263.3530349
上記のコードを実行すると、実行環境によって異なる値が出力されます。この値自体には特別な意味はなく、処理の前後で呼び出した結果の差分から経過時間を求めるのが一般的な使い方です。
プログラムの実行時間を計測する
time.perf_counter() の実践的な活用例として、プログラムの実行時間を計測してみましょう。ここでは、指定した数値が素数かどうかを判定する関数の処理時間を測定します。
# timeモジュールをインポート
import time
# 素数を判定する関数
def is_prime(number):
for i in range(2, number):
if number % i == 0:
return False
return True
if __name__ == '__main__':
number = 17377
start_time = time.perf_counter()
is_prime(number)
end_time = time.perf_counter()
# 差分から実行時間を算出して表示
print(end_time - start_time)
出力結果
0.004171799999994619
上記のプログラムを実行すると、is_prime() 関数の実行にかかった時間が秒単位で表示されます。このように、処理の直前と直後で perf_counter() を呼び出し、両者の差を取ることで、非常に高精度な時間計測が可能になります。
まとめ
time.perf_counter() は、Pythonで最も精度の高い時間計測を行うための標準的な手段です。ベンチマークテストやパフォーマンスチューニングの際にぜひ活用してください。なお、類似の機能として CPU 時間のみを計測する time.process_time() や、繰り返し実行による統計的計測に適した timeit モジュールなどもあるため、用途に応じて使い分けると効果的です。
本チュートリアルについて不明な点がある場合は、コメント欄でお気軽にお尋ねください。
-
Pythonでのベクトル化とは?NumPyによる高速な配列演算の基礎を解説
本記事では、Python 3.xにおける「ベクトル化(Vectorization)」の概念と、その実装に用いられるさまざまなテクニックについて解説します。ループ処理を排除した効率的なコードの書き方を、具体例とともに見ていきましょう。 ベクトル化とは何か? ベクトル化とは、ループを使用せずに配列操作を実装するテクニックです。関数を活用することで、コードの実行時間や計算時間を大幅に短縮できます。 ベクトル化では、配列に対して個別に処理を行うのではなく、ベクトル全体に対して一括で演算を実行します。代表的な演算には以下のようなものがあります。 ドット積(内積・スカラー積):2つのベクトルから単一のス
-
Pythonのintersection()関数とは?集合の共通要素(積集合)を求める方法
この記事では、Pythonのセット(集合)に対して実行できるintersection()関数について詳しく解説します。数学における「積集合(インターセクション)」とは、2つの集合から共通する要素を見つけ出すことを指します。構文<セット名>.intersection(<セットa1>, <セットa2>, …)戻り値引数として渡されたすべての集合に共通する要素(積集合)が、新しいセットとして返されます。使用例set_1 = {t,u,t,o,r,i,a,l} set_2 = {p,o,i,n,t} set_3 = {t,u,t} # 2つの集合の積集合 print