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