[Checkins] SVN: zope.interface/branches/jinty-mem/src/zope/interface/interface.py Be lazy about creating dict for storing tagged values.

Brian Sutherland jinty at web.de
Fri Nov 5 03:59:12 EDT 2010


Log message for revision 118221:
  Be lazy about creating dict for storing tagged values.
  
  Saves 0.9% of resident memory size on my real world application.
  

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-05 07:55:44 UTC (rev 118220)
+++ zope.interface/branches/jinty-mem/src/zope/interface/interface.py	2010-11-05 07:59:12 UTC (rev 118221)
@@ -61,7 +61,6 @@
 
         self.__name__=__name__
         self.__doc__=__doc__
-        self.__tagged_values = {}
 
     def getName(self):
         """ Returns the name of the object. """
@@ -73,19 +72,22 @@
 
     def getTaggedValue(self, tag):
         """ Returns the value associated with 'tag'. """
-        return self.__tagged_values[tag]
+        return getattr(self, '_Element__tagged_values', {})[tag]
 
     def queryTaggedValue(self, tag, default=None):
         """ Returns the value associated with 'tag'. """
-        return self.__tagged_values.get(tag, default)
+        return getattr(self, '_Element__tagged_values', {}).get(tag, default)
 
     def getTaggedValueTags(self):
         """ Returns a list of all tags. """
-        return self.__tagged_values.keys()
+        return getattr(self, '_Element__tagged_values', {}).keys()
 
     def setTaggedValue(self, tag, value):
         """ Associates 'value' with 'key'. """
-        self.__tagged_values[tag] = value
+        tv = getattr(self, '_Element__tagged_values', None)
+        if tv is None:
+            tv = self.__tagged_values = {}
+        tv[tag] = value
 
 class SpecificationBasePy(object):
 



More information about the checkins mailing list