Rev 2700: Use the low-level sorting facility in KnitVersionedFile.iter_records in http://people.ubuntu.com/~robertc/baz2.0/knits
Robert Collins
robertc at robertcollins.net
Thu Aug 16 09:14:21 BST 2007
At http://people.ubuntu.com/~robertc/baz2.0/knits
------------------------------------------------------------
revno: 2700
revision-id: robertc at robertcollins.net-20070816081414-ps82io1cs4cij6vz
parent: robertc at robertcollins.net-20070816080814-49b7t5gghdrhcx4d
committer: Robert Collins <robertc at robertcollins.net>
branch nick: knits
timestamp: Thu 2007-08-16 18:14:14 +1000
message:
Use the low-level sorting facility in KnitVersionedFile.iter_records
modified:
bzrlib/knit.py knit.py-20051212171256-f056ac8f0fbe1bd9
=== modified file 'bzrlib/knit.py'
--- a/bzrlib/knit.py 2007-08-16 08:08:14 +0000
+++ b/bzrlib/knit.py 2007-08-16 08:14:14 +0000
@@ -2062,20 +2062,25 @@
yield (record[0], content, digest)
else:
needed_records.add(record)
- needed_records = sorted(needed_records, key=operator.itemgetter(1))
else:
- needed_records = sorted(set(records), key=operator.itemgetter(1))
+ needed_records = records
if not needed_records:
return
+ # let the access object optimise lookups, so setup a mapping back to
+ # version_ids.
+ needed_memos = {}
+ for version_id, index_memo in needed_records:
+ needed_memos[index_memo] = version_id
+
# The transport optimizes the fetching as well
# (ie, reads continuous ranges.)
- raw_data = self._access.get_raw_records(
- [index_memo for version_id, index_memo in needed_records])
+ raw_results = self._access.get_raw_records_unsorted(
+ needed_memos.iterkeys())
- for (version_id, index_memo), data in \
- izip(iter(needed_records), raw_data):
+ for index_memo, data in raw_results:
+ version_id = needed_memos[index_memo]
content, digest = self._parse_record(version_id, data)
if self._do_cache:
self._cache[version_id] = data
More information about the bazaar-commits
mailing list