# HG changeset patch # User Siddharth Agarwal # Date 2013-09-07 05:57:51 # 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 --git a/mercurial/revlog.py b/mercurial/revlog.py --- a/mercurial/revlog.py +++ b/mercurial/revlog.py @@ -863,17 +863,20 @@ class revlog(object): 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