Python Timeit() と例

Python Timeit() とは何ですか?

Python の timeit() は、指定されたコード スニペットにかかる実行時間を測定する Python ライブラリのメソッドです。 Python ライブラリはコード ステートメントを 1 万回実行し、指定されたコード スニペットのセットからかかる最小時間を提供します。 Python timeit() は、コードのパフォーマンスをチェックするのに役立つ便利なメソッドです。

構文

timeit.timeit(stmt, setup,timer, number)

計測パラメータ

  • stmt: これにより、実行時間を測定するコードが取得されます。 デフォルト値は「パス」です。
  • : これにはセットアップが含まれますtails stmt の前に実行する必要があります。デフォルト値は「パス」です。
  • タイマー: これにはタイマー値が含まれます。timeit() にはすでにデフォルト値が設定されているため、無視できます。
  • : ここで指定された番号に従って stmt が実行されます。 デフォルト値は 1000000 です。

timeit() を使用するには、以下に示すようにモジュールをインポートする必要があります。

import timeit

最初の例

timeit() 関数の簡単な例を次に示します。

コード例1

# testing timeit()
import timeit
print(timeit.timeit('output = 10*5'))

出力:

0.06127880399999999

単純なコード ステートメントの実行時間の出力 = 10*5 を示す単純な例を見てきました。実行にかかる時間は 0.06127880399999999 です。

Pythonコード内の複数行のタイミング

timeit.timeit() で複数行のコードを実行するには、セミコロンを使用する方法と、コードを三重引用符で囲んだ文字列として保存する方法の XNUMX つがあります。

その仕組みを示す例を次に示します。

例 1: セミコロンの使用

import timeit
print("The time taken is ",timeit.timeit(stmt='a=10;b=10;sum=a+b'))

出力:

The time taken is  0.137031482

例 2: 三重引用符の使用

import timeit
import_module = "import random"
testcode = ''' 
def test(): 
    return random.randint(10, 100)
'''
print(timeit.repeat(stmt=testcode, setup=import_module))

出力:

C:\pythontest>python testtimeit.py
The time taken is  0.182619178

timeit – メソッド

ここでは 2 つの重要な timeit メソッドを紹介します

timeit.default_timer() : 実行時にデフォルトの時間を返します。

timeit.repeat(stmt, セットアップ, タイマー, リピート, 数値) : timeit() と同じですが、repeat では、指定された繰り返し回数だけ timeit() が呼び出されます。

プログラム例1

# testing 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

default_timer() の例

# testing timeit()
 
import timeit
import random
 
def test(): 
    return random.randint(10, 100)
 
starttime = timeit.default_timer()
print("The start time is :",starttime)
test()
print("The time difference is :", timeit.default_timer() - starttime)

出力:

The start time is : 0.220261875
The time difference is : 0.0004737320000000045

例 3: timeit.repeat()

# testing timeit()
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]

timeit.repeat() 関数は timeit.timeit() 関数と同様に機能しますが、唯一の違いは、repeat 引数を受け取り、繰り返し数に応じた値を含む配列形式で実行時間を返します。

コマンドラインインターフェース内でタイミング関数 timeit.timeit() を実行する

コマンドラインの timeit() 内で関数を実行する構文は次のとおりです。

python -m timeit [-n N] [-r N] [-s S] [-t] [-c] [-h] [code statement ...]

コマンドラインパラメータ:

  • -n N: コードを実行する回数。
  • -r N: timeit() 関数を繰り返す回数
  • -s S: これにはセットアップが含まれますtails コードの実行前に実行されます。
  • -t: このために、time.time() を利用できます。
  • -c: このために、time. Clock() を利用できます。
  • -h: ヘルプ用
  • コードステートメント: コードtails.

C:\pythontest>python -m timeit -s 'text="hello world"'
20000000 loops, best of 5: 13.1 nsec per loop

コマンドライン内で実行できる別の方法は次のとおりです。

>>> import timeit
>>> print("The time taken is ",timeit.timeit(stmt='a=10;b=10;sum=a+b'))
The time taken is  0.15048536300000137
>>>

timeit() が Python コードの実行時間を測定する最良の方法であるのはなぜですか?

timeit() が実行時間を測定する最良の方法であると考える理由をいくつか示します。

  • コード ステートメントはデフォルト値である 1 万回実行され、そこから最小所要時間が返されます。 time()関数に引数の数値を設定することで、1万を増減することもできます。
  • テスト実行中は、time()関数により毎回ガベージコレクションが無効になります。
  • timeit() は、使用されているオペレーティング システムに応じて内部的に正確な時間を取得します。 たとえば、Windows オペレーティング システムの場合は time.clock() を使用し、Mac と Linux の場合は time.time() を使用します。

まとめ

Timeit() は、指定された小さなコードにかかる実行時間を取得するために使用されます。

timeit() で使用されるパラメータ

  • stmt: これは、実行時間を測定したいコードを取得します。
  • setup: これにはセットアップが含まれますtails stmt の前に実行する必要がある
  • timer: これにはタイマー値が含まれます。timeit() にはすでにデフォルト値が設定されているため、無視できます。
  • 数値: ここで指定された数値に従って stmt が実行されます。