Christoph Spiel <cspiel@freenet.de> [Thu, 27 Sep 2007 23:58:54 -0500] rev 5340
bdiff: simple splitlines optimization
Christoph Spiel <cspiel@freenet.de> [Thu, 27 Sep 2007 23:57:57 -0500] rev 5339
I have spotted the biggest bottleneck in "bdiff.c". Actually it was
pretty easy to find after I recompiled the python interpreter and
mercurial for profiling.
In "bdiff.c" function "equatelines" allocates the minimum hash table
size, which can lead to tons of collisions. I introduced an
"overcommit" factor of 16, this is, I allocate 16 times more memory
than the minimum value. Overcommiting 128 times does not improve the
performance over the 16-times case.
Alexis S. L. Carvalho <alexis@cecm.usp.br> [Wed, 26 Sep 2007 01:58:45 -0300] rev 5338
revlog: fix revlogio.packentry corner case
We want to store version information about the revlog in the first
entry of its index. The code in packentry was using some heuristics
to detect whether this was the first entry, but these heuristics could
fail in some cases (e.g. rev 0 was empty; rev 1 descends directly from
the nullid and is stored as a delta).
We now give the revision number to packentry to avoid heuristics.