[Checkins] SVN: zope.component/trunk/ Optimized un/registerUtility
via storing an optimized data structure for
Hanno Schlichting
plone at hannosch.info
Thu Nov 1 07:31:31 EDT 2007
Log message for revision 81348:
Optimized un/registerUtility via storing an optimized data structure for
efficient retrieval of already registered utilities. This avoids looping over
all utilities when registering a new one.
Changed:
U zope.component/trunk/README.txt
U zope.component/trunk/src/zope/component/persistentregistry.py
U zope.component/trunk/src/zope/component/registry.py
-=-
Modified: zope.component/trunk/README.txt
===================================================================
--- zope.component/trunk/README.txt 2007-11-01 09:32:18 UTC (rev 81347)
+++ zope.component/trunk/README.txt 2007-11-01 11:31:31 UTC (rev 81348)
@@ -14,7 +14,9 @@
3.4.1 (unreleased)
==================
-...
+Optimized un/registerUtility via storing an optimized data structure for
+efficient retrieval of already registered utilities. This avoids looping over
+all utilities when registering a new one.
3.4.0 (2007-09-29)
==================
Modified: zope.component/trunk/src/zope/component/persistentregistry.py
===================================================================
--- zope.component/trunk/src/zope/component/persistentregistry.py 2007-11-01 09:32:18 UTC (rev 81347)
+++ zope.component/trunk/src/zope/component/persistentregistry.py 2007-11-01 11:31:31 UTC (rev 81348)
@@ -51,6 +51,7 @@
def _init_registrations(self):
self._utility_registrations = persistent.mapping.PersistentMapping()
+ self._utility_subscribers = persistent.mapping.PersistentMapping()
self._adapter_registrations = persistent.mapping.PersistentMapping()
self._subscription_registrations = persistent.list.PersistentList()
self._handler_registrations = persistent.list.PersistentList()
Modified: zope.component/trunk/src/zope/component/registry.py
===================================================================
--- zope.component/trunk/src/zope/component/registry.py 2007-11-01 09:32:18 UTC (rev 81347)
+++ zope.component/trunk/src/zope/component/registry.py 2007-11-01 11:31:31 UTC (rev 81348)
@@ -44,6 +44,7 @@
def _init_registrations(self):
self._utility_registrations = {}
+ self._utility_subscribers = {}
self._adapter_registrations = {}
self._subscription_registrations = []
self._handler_registrations = []
@@ -75,13 +76,9 @@
# already registered
return
- subscribed = False
- for ((p, _), (c,_)) in self._utility_registrations.iteritems():
- if p == provided and c == component:
- subscribed = True
- break
-
+ subscribed = self._utility_subscribers.get((provided, component), False)
self._utility_registrations[(provided, name)] = component, info
+ self._utility_subscribers[(provided, component)] = True
self.utilities.register((), provided, name, component)
if not subscribed:
@@ -108,12 +105,8 @@
del self._utility_registrations[(provided, name)]
self.utilities.unregister((), provided, name)
- subscribed = False
- for ((p, _), (c,_)) in self._utility_registrations.iteritems():
- if p == provided and c == component:
- subscribed = True
- break
-
+ subscribed = self._utility_subscribers.get((provided, component), False)
+ del self._utility_subscribers[(provided, component)]
if not subscribed:
self.utilities.unsubscribe((), provided, component)
More information about the Checkins
mailing list