__peter__ at web.de
Mon Aug 11 18:46:13 CEST 2008
Kris Kennaway wrote:
> Peter Otten wrote:
>> M8R-n7vorv at mailinator.com wrote:
>>> On Aug 10, 10:10 pm, Kris Kennaway <k... at FreeBSD.org> wrote:
>>>> jlist wrote:
>>>>> I think what makes more sense is to compare the code one most
>>>>> typically writes. In my case, I always use range() and never use
>>>>> psyco. But I guess for most of my work with Python performance hasn't
>>>>> been a issue. I haven't got to write any large systems with Python
>>>>> yet, where performance starts to matter.
>>>> Hopefully when you do you will improve your programming practices to
>>>> not make poor choices - there are few excuses for not using xrange ;)
>>> And can you shed some light on how that relates with one of the zens
>>> of python ?
>>> There should be one-- and preferably only one --obvious way to do it.
>> For the record, the impact of range() versus xrange() is negligable -- on
>> my machine the xrange() variant even runs a tad slower. So it's not clear
>> whether Kris actually knows what he's doing.
> You are only thinking in terms of execution speed.
Yes, because my remark was made in the context of the particular benchmark
supposed to be the topic of this thread.
> Now think about memory use.
Now you are moving the goal posts, But still, try to increase the chain
length. I guess you'll find that the impact of range() -- in
Chain.__init__() at least -- on the memory footprint is also negligable
because the Person objects consume much more memory than the tempory list.
> Using iterators instead of constructing lists is something
> that needs to permeate your thinking about python or you will forever be
> writing code that wastes memory, sometimes to a large extent.
I like and use an iterator/generator/itertools-based idiom myself, but
for "small" sequences lists are quite competitive, and the notion of what a
small list might be is constantly growing.
In general I think that if you want to promote a particular coding style you
should pick an example where you can demonstrate actual benefits.
More information about the Python-list