On Wed, Mar 16, 2011 at 7:32 PM, Shane O'Connor <spiderbabym...@gmail.com>wrote:

> Hi,
>
> First-time poster here. I've a question about loop efficiency - I was
> wondering whether this code:
>
> i = 0
> while i < 1000:
>     do something
>     i+=1
>
> is more efficient than:
>
> for i in range(1000):
>     do something
>
> or:
>
> for i in xrange(1000):
>     do something
>
> In my mind, the while loop should not allocate as much memory as range or
> have the overhead of the iterator of xrange (although aesthetically, I
> prefer the x/range style). Is this the case or does the compiler do
> something clever here?
>
> In particular, I'm using Python 2.4.3 on a web server which needs to run as
> fast as possible using as little memory as possible (no surprises there!).
> I'm aware that there are more significant optimizations than the above and I
> will profile the code rather than prematurely optimize loops at the sake of
> readability/errors but I'm still curious about the answer.
>

Well, I'm not sure about the xrange v while loop, but I'm 100% certain that
range is the least efficient of all -  because you both create the iterator
*and* a list to iterate over it. My guess is that xrange v while is fairly
similar, I do know that the for loop raises/catches a StopIteration under
the hood, so there may be some performance issues - I don't think you'll get
a big gain unless you're running the loop thousands+ times, but I could be
wrong.

HTH,
Wayne
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to