私は、ループ内のif文の速度とその速度への影響に関していくつかのテストを行っています。私が見つけたことは、一貫して、if-statementがパフォーマンスを改善したことでした。私のコード:whileループwhileループwhileループより高速
import time
t = time.time
start = t()
x = 0
while x < 10000000:
x += 1
time1 = t()
x = 0
while x < 10000000:
x += 1
if True:
pass
time2 = t()
print(start)
print(time1 - start) # Time for simple while-loop
print(time2 - time1) # Time for while+if
サンプル出力は次のようになります。完全に直感的である
1355517837.993
1.7850000858306885
1.7209999561309814
。 while-if-loopは、標準while-loopよりも少し早く動作します。これは私がそれを実行するたびに起こります。おそらく20回に1回は長くかかります。なぜ誰が知っていますか?
両方のタイムブロックから 'x = 0'を移動するとどうなりますか?あなたが見ているのは、インタプリタが最初のブロックに 'x'を割り当てなければならないが、2番目のブロックには' x 'を割り当てる必要があるということです。 –
ここでは同じではありません。私は次のようなタイミングを持っています: '$ python t.py 1355519439.65 1.92616391182 2.65010595322'; Python 2.7.3で実行しました – Rubens
ifループを最初に実行した後に結果を返します。私にとっては最初のものが常により速いです。 – Edu