[PATCH 3 of 3] revlog: optimize _chunkraw when startrev==endrev
Yuya Nishihara
yuya at tcha.org
Fri Nov 4 04:27:37 EDT 2016
On Tue, 01 Nov 2016 18:25:47 -0700, Gregory Szorc wrote:
> # HG changeset patch
> # User Gregory Szorc <gregory.szorc at gmail.com>
> # Date 1477244433 25200
> # Sun Oct 23 10:40:33 2016 -0700
> # Node ID 4c96a177e4ff6a63156ec8cf49483a78e4437756
> # Parent 0c41c0cb9b1ef7df40a30672927229ac195b1c92
> revlog: optimize _chunkraw when startrev==endrev
LGTM, queued the series, thanks.
> In many cases, _chunkraw() is called with startrev==endrev. When
> this is true, we can avoid an extra index lookup and some other
> minor operations.
>
> On the mozilla-unified repo, `hg perfrevlogchunks -c` says this
> has the following impact:
>
> ! read w/ reused fd
> ! wall 0.371846 comb 0.370000 user 0.350000 sys 0.020000 (best of 27)
> ! wall 0.337930 comb 0.330000 user 0.300000 sys 0.030000 (best of 30)
>
> ! read batch w/ reused fd
> ! wall 0.014952 comb 0.020000 user 0.000000 sys 0.020000 (best of 197)
> ! wall 0.014866 comb 0.010000 user 0.000000 sys 0.010000 (best of 196)
>
> So, we've gone from ~25x slower than batch to ~22.5% slower.
>
> At this point, there's probably not much else we can do except
> implement an optimized function in the index itself, including in C.
or in Rust :-)
More information about the Mercurial-devel
mailing list