Newbie Question: can this snippet be optimized?

Jp Calderone exarkun at intarweb.us
Wed Jun 25 13:20:26 EDT 2003


On Wed, Jun 25, 2003 at 03:08:00PM +0000, Hedr at intarweb.us wrote:
> Hi Pythonians,
> 
> The underlying snippet is copied from minidom.py which is in the XML
> package which I am currently using. Cloning nodes seem to take a
> considerable amount of time, hence I went looking in the code whether
> optimizations could be made. The following snippet contains a for
> loop:
> 
>     def cloneNode(self, deep):
>         clone = Node.cloneNode(self, deep)
>         clone._attrs = {}
>         clone._attrsNS = {}
>         for attr in self._attrs.values():
>             node = attr.cloneNode(1)
>             clone._attrs[node.name] = node
>             clone._attrsNS[(node.namespaceURI, node.localName)] = node
>             node.ownerElement = clone
>         return clone

  Using "itervalues" instead of "values" may produce some minor improvement.
values() creates a new list object containing references to all the values
in the dictionary, while itervalues() only creates a very light-weight
iterator.

  Jp

-- 
Seduced, shaggy Samson snored.
She scissored short.  Sorely shorn,
Soon shackled slave, Samson sighed,
Silently scheming,
Sightlessly seeking
Some savage, spectacular suicide.
                -- Stanislaw Lem, "Cyberiad"





More information about the Python-list mailing list