-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 11/09/2010 08:26 AM, Wichert Akkerman wrote:
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_
- -1: mutable class defaults are a bug magnet. Tres. - -- =================================================================== Tres Seaver +1 540-429-0999 tseaver@palladion.com Palladion Software "Excellence by Design" http://palladion.com -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAkzZlFUACgkQ+gerLs4ltQ5ZYQCfRyDUGofCMiER447yJjBeEduu E5IAniZu6SbOmYZC0XJt/4WeXOY2u5oD =cNXP -----END PGP SIGNATURE-----