"Steve Holden" <st...@holdenweb.com> wrote in message
news:mailman.54.1292502247.6505.python-l...@python.org...
On 12/16/2010 5:44 AM, BartC wrote:

One these is 30% faster than the other. That's an appreciable
difference, which you can't really just dismiss.

shol...@lifeboy ~
$ python -m timeit -- "i = 1" "while True:" "    i += 1" "    if i ==
1000000: break"
10 loops, best of 3: 157 msec per loop

$ python -m timeit -- "i = 1" "while 1:" "    i += 1" "    if i ==
1000000: break"
10 loops, best of 3: 116 msec per loop

I used a single loop counting to 10 million, and the timings were roughly
2.5xx and 1.8xx seconds, on Python 2.5 (1.35 and 1.05 seconds inside a
function).

In terms of a more realistic function (admittedly still a little contrived, as the loop would be written differently), I tried this:

def p2(n):
 p=1
 while True:
   if n<=p: return p
   p<<=1
 return 0

for i in xrange(1000000):
 x=p2(i)

p2() calculates the smallest power of 2 >= it's operand.

Using while True as shown, it took 3.4 seconds. Using While 1, it took 2.6 seconds (Python 2.5).

--
Bartc
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to