Rev 2688: Performance tweak - use a set for InMemoryGraph key iteration. in http://people.ubuntu.com/~robertc/baz2.0/repository

Robert Collins robertc at robertcollins.net
Wed Aug 1 04:52:02 BST 2007


At http://people.ubuntu.com/~robertc/baz2.0/repository

------------------------------------------------------------
revno: 2688
revision-id: robertc at robertcollins.net-20070801035157-188zudlolnhuiqp2
parent: robertc at robertcollins.net-20070731071233-t7n74dnqs6stfpbd
committer: Robert Collins <robertc at robertcollins.net>
branch nick: repository
timestamp: Wed 2007-08-01 13:51:57 +1000
message:
  Performance tweak - use a set for InMemoryGraph key iteration.
modified:
  bzrlib/index.py                index.py-20070712131115-lolkarso50vjr64s-1
=== modified file 'bzrlib/index.py'
--- a/bzrlib/index.py	2007-07-30 04:15:13 +0000
+++ b/bzrlib/index.py	2007-08-01 03:51:57 +0000
@@ -65,6 +65,7 @@
         :param key_elements: The number of bytestrings in each key.
         """
         self.reference_lists = reference_lists
+        self._keys = set()
         self._nodes = {}
         self._nodes_by_key = {}
         self._key_length = key_elements
@@ -105,6 +106,7 @@
         if key in self._nodes and self._nodes[key][0] == '':
             raise errors.BadIndexDuplicateKey(key, self)
         self._nodes[key] = ('', tuple(node_refs), value)
+        self._keys.add(key)
         if self._key_length > 1:
             key_dict = self._nodes_by_key
             if self.reference_lists:
@@ -590,12 +592,12 @@
         """
         keys = set(keys)
         if self.reference_lists:
-            for key in keys.intersection(self._nodes):
+            for key in keys.intersection(self._keys):
                 node = self._nodes[key]
                 if not node[0]:
                     yield key, node[2], node[1]
         else:
-            for key in keys.intersection(self._nodes):
+            for key in keys.intersection(self._keys):
                 node = self._nodes[key]
                 if not node[0]:
                     yield key, node[2]



More information about the bazaar-commits mailing list