The myth is around that while loop is faster than the corresponding for loop. I checked it out with Python module timeit, and came to surprising conclusion.

This snippet can easily be modified to time any of your functions you write.

# conclusion: while loop is slower than for loop

def while1():
    x = 0
    while x < 100:
        x += 1
    return x

print while1()  # test

def for1():
    x = 0
    for y in range(100):
        x += 1
    return x

print for1()

# using xrange()
def for2():
    x = 0
    for y in xrange(100):
        x += 1
    return x

print for2()

import timeit

print "Timing 100000 passes ..."

t = timeit.Timer('while1()', "from __main__ import while1")
elapsed = (10 * t.timeit(number=100000))
print "Function while1() takes %0.3f microseconds/pass" % elapsed

t = timeit.Timer('for1()', "from __main__ import for1")
elapsed = (10 * t.timeit(number=100000))
print "Function for1() takes %0.3f microseconds/pass" % elapsed

t = timeit.Timer('for2()', "from __main__ import for2")
elapsed = (10 * t.timeit(number=100000))
print "Function for2() takes %0.3f microseconds/pass" % elapsed

"""
typical result:
Function while1() takes 24.712 microseconds/pass
Function for1() takes 22.281 microseconds/pass
Function for2() takes 20.341 microseconds/pass
"""

Sorry, can't confirm that. A typical result from my machine (Python 2.4) looks like this.

Function while1() takes 21.923 microseconds/pass
Function for1() takes 23.813 microseconds/pass
Function for2() takes 21.976 microseconds/pass

Thanks for the snipped anyway.

I get these results on a Windows Xp machine:

Function while1() takes 9.358 microseconds/pass
Function for1() takes 10.075 microseconds/pass
Function for2() takes 10.604 microseconds/pass

Wonder why xrange() is even slower?

Python 2.5, Windows XP, Pentium 4 at 2.60GHz and 1 GB memory.

100
100
100
Timing 100000 passes ...
Function while1() takes 12.069 microseconds/pass
Function for1() takes 13.216 microseconds/pass
Function for2() takes 13.082 microseconds/pass

Thanks for the nice snippet.

The article starter has earned a lot of community kudos, and such articles offer a bounty for quality replies.