On Thu, 02 Feb 2012 07:23:04 +0000, Paulo da Silva wrote:

> Em 01-02-2012 04:55, Cameron Simpson escreveu:
>> On 01Feb2012 03:34, Paulo da Silva <p_s_d_a_s_i_l_...@netcabo.pt>
>> wrote:
> 
>> | BTW, iter seems faster than iterating thru mylist[1:]!
>> 
>> I would hope the difference can be attributed to the cost of copying
>> mylist[1:].
> I don't think so. I tried several times and the differences were almost
> always consistent.

Yes, actually iterating over a list-iterator appears to be trivially 
faster (although this may not apply to arbitrary iterators):

steve@runes:~$ python -m timeit -s "L=range(10000)" "for x in L: pass"
1000 loops, best of 3: 280 usec per loop
steve@runes:~$ python -m timeit -s "L=range(10000)" "for x in iter(L): 
pass"
1000 loops, best of 3: 274 usec per loop


The difference of 6 microseconds would be lost in the noise if the loops 
actually did something useful.

Also keep in mind that for tiny lists, the overhead of creating the 
iterator is probably much greater than the time of iterating over the 
list:

steve@runes:~$ python -m timeit -s "L=range(3)" "for x in L: pass"
1000000 loops, best of 3: 0.238 usec per loop
steve@runes:~$ python -m timeit -s "L=range(3)" "for x in iter(L): pass"
1000000 loops, best of 3: 0.393 usec per loop

But of course the difference is only relatively significant, in absolute 
terms nobody is going to notice an extra 0.1 or 0.2 microseconds.



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

Reply via email to