[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