[解決済み】Pythonsのtimeitでパフォーマンスをテストするためにコードセグメントを時間指定するにはどうすればよいですか?
2022-04-17 16:26:03
質問
Pythonスクリプトがあり、その通りに動作するのですが、実行時間を書き込む必要があります。ググってみると
timeit
が、なかなかうまくいきません。
私のPythonスクリプトは次のようなものです。
import sys
import getopt
import timeit
import random
import os
import re
import ibm_db
import time
from string import maketrans
myfile = open("results_update.txt", "a")
for r in range(100):
rannumber = random.randint(0, 100)
update = "update TABLE set val = %i where MyCount >= '2010' and MyCount < '2012' and number = '250'" % rannumber
#print rannumber
conn = ibm_db.pconnect("dsn=myDB","usrname","secretPWD")
for r in range(5):
print "Run %s\n" % r
ibm_db.execute(query_stmt)
query_stmt = ibm_db.prepare(conn, update)
myfile.close()
ibm_db.close(conn)
必要なのは、クエリの実行とファイルへの書き込みにかかる時間です。
results_update.txt
. 目的は、異なるインデックスとチューニング機構を持つ私のデータベースの更新ステートメントをテストすることです。
どのように解決するのですか?
を使用することができます。
time.time()
または
time.clock()
タイミングを合わせたいブロックの前後で
import time
t0 = time.time()
code_block
t1 = time.time()
total = t1-t0
この方法は
timeit
(複数の実行を平均化しない) が、簡単な方法である。
time.time()
(WindowsとLinuxの場合)と
time.clock()
(Linuxの場合)は高速な関数に対して十分な精度を持ちません(total = 0となります)。このような場合、あるいは複数の実行による経過時間を平均化したい場合は、手動で関数を複数回呼び出す必要があります(このサンプルコードではすでに実行されていると思いますし、timeitがその
数
引数)
import time
def myfast():
code
n = 10000
t0 = time.time()
for i in range(n): myfast()
t1 = time.time()
total_n = t1-t0
Windowsの場合、Coreyさんのコメントにあるように
time.clock()
ははるかに高い精度(秒ではなくマイクロ秒)であるため、より優先されます。
time.time()
.
関連
-
Pythonの非常に便利な2つのデコレーターを解説
-
python string splicing.join()とsplitting.split()の説明
-
Python LeNetネットワークの説明とpytorchでの実装
-
[解決済み】django インポートエラー - core.managementという名前のモジュールがない
-
[解決済み] Pythonで "with open "を使って複数のファイルを開くにはどうしたらいいですか?
-
[解決済み] NaN値をチェックするにはどうすればよいですか?
-
[解決済み] NumPyでユークリッド距離はどのように計算できますか?
-
[解決済み] Pythonの文字列をスペースで埋めるにはどうしたらいいですか?
-
[解決済み] argparseでコマンドラインの引数としてリストを渡すにはどうしたらいいですか?
-
[解決済み] 時間の影響を受けやすいコードをテストするためにJava System.currentTimeMillisをオーバーライドする。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
PythonはWordの読み書きの変更操作を実装している
-
Pythonの画像ファイル処理用ライブラリ「Pillow」(グラフィックの詳細)
-
[解決済み】RuntimeWarning: 割り算で無効な値が発生しました。
-
[解決済み】OSError: [WinError 193] %1 は有効な Win32 アプリケーションではありません。
-
[解決済み】Pythonスクリプトで「Expected 2D array, got 1D array instead: 」というエラーが発生?
-
[解決済み】TypeError: re.findall()でバイトのようなオブジェクトに文字列パターンを使用することはできません。)
-
[解決済み】「OverflowError: Python int too large to convert to C long" on windows but not mac
-
[解決済み】ValueError: xとyは同じサイズでなければならない
-
[解決済み] Pythonです。タイマーの開始と停止 [重複] [重複
-
[解決済み】リストをディープコピーする方法?