# HG changeset patch # User Siddharth Agarwal # Date 1378533471 25200 # Node ID 1aab406be57c4a4bbe55dab1a6a49991956d2863 # Parent 0e07c0b5fb1c98f758bda54623a88ea692e1bac9 revlog._chunks: inline getchunk We do this in a somewhat hacky way, relying on the fact that our sole caller preloads the cache right before calling us. An upcoming patch will make this more sensible. For a 20 MB manifest with a delta chain of > 40k, perfmanifest goes from 0.49 seconds to 0.46. diff -r 0e07c0b5fb1c -r 1aab406be57c mercurial/revlog.py --- a/mercurial/revlog.py Sat Sep 07 12:42:46 2013 -0700 +++ b/mercurial/revlog.py Fri Sep 06 22:57:51 2013 -0700 @@ -863,17 +863,20 @@ length = self.length inline = self._inline iosize = self._io.size - getchunk = self._getchunk + buffer = util.buffer l = [] ladd = l.append + # XXX assume for now that chunkcache is preloaded + offset, data = self._chunkcache + for rev in revs: chunkstart = start(rev) if inline: chunkstart += (rev + 1) * iosize chunklength = length(rev) - ladd(decompress(getchunk(chunkstart, chunklength))) + ladd(decompress(buffer(data, chunkstart - offset, chunklength))) return l