[kupfer: 47/51] Speed up puid lookup by only constructing the source index once
- From: Ulrik Sverdrup <usverdrup src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [kupfer: 47/51] Speed up puid lookup by only constructing the source index once
- Date: Sun, 10 Jan 2010 12:00:47 +0000 (UTC)
commit 719d14db9ff9385976076f0ec54f11a015f82ea0
Author: Ulrik Sverdrup <ulrik sverdrup gmail com>
Date: Sun Jan 10 03:51:28 2010 +0100
Speed up puid lookup by only constructing the source index once
kupfer/core/data.py | 8 ++++++--
kupfer/puid.py | 4 ++--
2 files changed, 8 insertions(+), 4 deletions(-)
---
diff --git a/kupfer/core/data.py b/kupfer/core/data.py
index d4af223..7bd8a24 100644
--- a/kupfer/core/data.py
+++ b/kupfer/core/data.py
@@ -415,14 +415,17 @@ class SourceController (pretty.OutputMixin):
if len(self.sources) == 1:
root_catalog, = self.sources
elif len(self.sources) > 1:
- firstlevel = self._pre_root
+ firstlevel = self._firstlevel
root_catalog = sources.MultiSource(firstlevel)
else:
root_catalog = None
return root_catalog
@property
- def _pre_root(self):
+ def _firstlevel(self):
+ firstlevel = getattr(self, "_pre_root", None)
+ if firstlevel:
+ return firstlevel
sourceindex = set(self.sources)
kupfer_sources = sources.SourcesSource(self.sources)
sourceindex.add(kupfer_sources)
@@ -431,6 +434,7 @@ class SourceController (pretty.OutputMixin):
firstlevel = []
firstlevel.append(sources.SourcesSource(sourceindex))
firstlevel.extend(set(self.toplevel_sources))
+ self._pre_root = firstlevel
return firstlevel
@classmethod
diff --git a/kupfer/puid.py b/kupfer/puid.py
index a6b32b8..dd0fe9a 100644
--- a/kupfer/puid.py
+++ b/kupfer/puid.py
@@ -97,10 +97,10 @@ def resolve_unique_id(puid, excluding=None):
pretty.print_debug(__name__, type(exc).__name__, exc)
return None
sc = data.GetSourceController()
- obj = _find_obj_in_catalog(puid, sc._pre_root)
+ obj = _find_obj_in_catalog(puid, sc._firstlevel)
if obj is not None:
return obj
- other_sources = set(sc.sources) - set(sc._pre_root)
+ other_sources = set(sc.sources) - set(sc._firstlevel)
obj = _find_obj_in_catalog(puid, other_sources)
return obj
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]