[Checkins] SVN: zope.interface/branches/jinty-mem/src/zope/interface/interface.py Improve CPU performance of previous memory optimization
Wichert Akkerman
wichert at wiggy.net
Tue Nov 9 08:26:28 EST 2010
On 11/9/10 14:22 , Brian Sutherland wrote:
> Log message for revision 118295:
> Improve CPU performance of previous memory optimization
>
> Changed:
> U zope.interface/branches/jinty-mem/src/zope/interface/interface.py
>
> -=-
> Modified: zope.interface/branches/jinty-mem/src/zope/interface/interface.py
> ===================================================================
> --- zope.interface/branches/jinty-mem/src/zope/interface/interface.py 2010-11-09 08:31:37 UTC (rev 118294)
> +++ zope.interface/branches/jinty-mem/src/zope/interface/interface.py 2010-11-09 13:22:27 UTC (rev 118295)
> @@ -51,6 +51,7 @@
> # infrastructure in place.
> #
> #implements(IElement)
> + __tagged_values = None
>
> def __init__(self, __name__, __doc__=''):
> """Create an 'attribute' description
> @@ -72,22 +73,27 @@
>
> def getTaggedValue(self, tag):
> """ Returns the value associated with 'tag'. """
> - return getattr(self, '_Element__tagged_values', {})[tag]
> + if self.__tagged_values is None:
> + return default
> + return self.__tagged_values[tag]
You can even optimise this further:
tv = self.__tagged_values
if tv is None:
return default
return tv[tv]
that avoids a second attribute lookup. You may also want to benchmark
that versus using a __tagged_values={} on the class and doing a simple
return self.__tagged_values.get(tag, default_
Wichert.
More information about the checkins
mailing list