While-loop with if-statement faster than while-loop

I am doing some testing regarding the speed of if-statements in loops and their effect on speed. Something I found was that consistently, the if-statement improved performance. My code:

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

A sample output would be:

1355517837.993
1.7850000858306885
1.7209999561309814

Which is completely counter-intuitive. The while-if-loop is working ever-so-slightly faster than the standard while-loop. This happens almost every time I run it; perhaps 1 in 20 times take longer. Does anyone know why?

Best answer

I’d guess that the compiler would remove the if True block since it is constant.

When I run I get mostly the opposite results from you. I may just be random effects of the execution environment.

1355519587.2
0.832797050476
1.04382395744

1355519590.03
0.863899946213
1.09347200394

1355519593.72
0.831655025482
1.05389809608

1355519599.71
0.831452131271
1.41783499718

1355519602.99
0.815280914307
1.05724310875

1355519605.72
0.826404094696
1.05700492859

1355519608.94
0.827296972275
1.07807898521