On Tue, Sep 13, 2016 at 6:31 PM, Jay Pipes <[email protected]> wrote: > On 09/13/2016 01:40 PM, Terry Wilson wrote: >> >> On Thu, Jun 11, 2015 at 8:33 AM, Sean Dague <[email protected]> wrote: >>> >>> On 06/11/2015 09:02 AM, Jay Pipes wrote: >>>> >>>> On 06/11/2015 01:16 AM, Robert Collins wrote: >>>>> >>>>> But again - where in OpenStack does this matter the slightest? >>>> >>>> >>>> Precisely. I can't think of a single case where we are iterating over >>>> anywhere near the number of dictionary items that we would see any >>>> impact whatsoever. >> >> >> In neutron, the ovsdb native code iterates over fairly large >> dictionaries since the underlying OVS library stores OVSDB tables >> completely in memory as dicts. I just looked at the code I wrote and >> it currently uses values() and I now want to switch it to >> six.itervalues() :p. >> >>>> Best, >>>> -jay >>> >>> >>> +1. >>> >>> This is a massive premature optimization which just makes all the code >>> gorpy for no real reason. >> >> >> Premature optimization is about wasting a bunch of time trying to >> optimize code before you know you need to, not about following the >> accepted almost-always-faster/always-less-memory-using solution that >> already exists. Memory-wise it's the difference between a constant >> 88-byte iterator and the storage for an additional list of tuples. And >> if Raymond Hettinger, in a talk called "Transforming Code Into >> Beautiful Idiomatic Python" specifically mentions that people should >> always use iteritems >> (https://www.youtube.com/watch?v=OSGv2VnC0go&feature=youtu.be&t=21m24s), >> I tend to believe him. Sure, it'd be much better if Python 3 and >> Python 2 both returned iterators for items(), values(), keys(), etc., >> but it doesn't. Wasting memory for purely aesthetic reasons (they're >> even both the same number of lines) is just a bad idea, IMNSHO. > > > Is it wasted time to respond to a mailing list post from 18 months ago? > > -jay
Ha! Absolutely it is. Someone posted a Neutron patch haphazardly converting all of of the six.iteritems() calls to items() and it struck a nerve. I searched for the thread in gmail not noticing the date. My apologies! :) Terry __________________________________________________________________________ OpenStack Development Mailing List (not for usage questions) Unsubscribe: [email protected]?subject:unsubscribe http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
