[PATCH 0 of 4 RFC] Reusing the zlib stream when compressing revlog chunks

Matt Mackall mpm at selenic.com
Mon Feb 8 20:13:04 CST 2010


On Tue, 2010-02-09 at 00:34 +0100, Benoit Boissinot wrote:
> On Mon, Feb 08, 2010 at 09:20:47PM -0200, Wagner Bruna wrote:
> > Hello,
> > 
> > This is an experimental patch series to avoid resetting the
> > zlib stream when compressing revlog chunks. Instead of
> > compressing each delta chunk separately, the zlib stream used
> > for decompressing each snapshot chunk is preserved, and
> > reused for the decompression of its delta chunks.
> > 
> 
> Thanks for doing this.

Yeah, I've been meaning to try this experiment for quite a while. It's
doable in principle for the parent deltas we've been talking about on
the sprint but will obviously need to be slightly more complicated
(build a context across a chain rather than a contiguous block).

> > To try it, simply apply to a current hg, and clone --pull a
> > repository. A sample result follows:
> > 
> > $ du -sh hg-crew-*/.hg
> > 24M  hg-crew-vanilla/.hg
> > 18M  hg-crew-zlibstream/.hg
> > 
> > This is actually my "best case"; most repositories on my
> > tests reduced by only 4-10%. I'm not sure if that'd be a
> > general rule, so if you try it, please send your results.
> 
> Could you add more results (bigger repo, kernel like)? And from the
> savings, how much comes from 00manifest ?

And you might try comparing before and after shrink-revlog on the
manifest.

-- 
http://selenic.com : development and support for Mercurial and Linux




More information about the Mercurial-devel mailing list