[Checkins] SVN: zope.interface/branches/jinty-mem/src/zope/interface/interface.py Improve CPU performance of previous memory optimization

Brian Sutherland jinty at web.de
Tue Nov 9 08:22:28 EST 2010


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]
 
     def queryTaggedValue(self, tag, default=None):
         """ Returns the value associated with 'tag'. """
-        return getattr(self, '_Element__tagged_values', {}).get(tag, default)
+        if self.__tagged_values is None:
+            return default
+        return self.__tagged_values.get(tag, default)
 
     def getTaggedValueTags(self):
         """ Returns a list of all tags. """
-        return getattr(self, '_Element__tagged_values', {}).keys()
+        if self.__tagged_values is None:
+            return default
+        return self.__tagged_values.keys()
 
     def setTaggedValue(self, tag, value):
         """ Associates 'value' with 'key'. """
-        tv = getattr(self, '_Element__tagged_values', None)
-        if tv is None:
-            tv = self.__tagged_values = {}
-        tv[tag] = value
+        if self.__tagged_values is None:
+            self.__tagged_values = {}
+        self.__tagged_values[tag] = value
 
 class SpecificationBasePy(object):
 



More information about the checkins mailing list