Mercurial > hg
view tests/test-issue6642.t @ 51108:0250e45040f1
revlog: add a small cache of unfiltered chunk
This can provides a massive boost to the reading of multiple revision and the
computation of a valid delta chain.
This greatly help operation like `hg log --patch`, delta computation (helping
pull/unbundle), linkrev adjustment (helping copy tracing).
A first round of benchmark for `hg log --patch --limit 1000` shows improvement
in the 10-20% range on "small" repository like pypy or mercurial and large
improvements (about 33%) for more complex ones like netbeans and mozilla's.
These speeds up are consistent with the improvement to `hg pull` (from a server
sending poor deltas) I saw benchmarking this last year. Further benchmark will
be run during the freeze.
I added some configuration in the experimental space to be able to further test
the effect of various tuning for now. This feature should fit well in the
"usage/resource profile" configuration that we should land next cycle.
When it does not provides a benefit the overhead of the cache seem to be around
2%, a small price for the big improvement. In addition I believe we could shave
most of this overhead with a more efficent lru implementation.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Fri, 27 Oct 2023 08:54:41 +0200 |
parents | 7e5be4a7cda7 |
children |
line wrap: on
line source
hg log --debug shouldn't show different data than {file_*} template keywords https://bz.mercurial-scm.org/show_bug.cgi?id=6642 $ hg init issue6642 $ cd issue6642 $ echo a > a $ hg ci -qAm a $ echo b > b $ hg ci -qAm b $ hg up 0 -q $ echo c > c $ hg ci -qAm c $ hg merge -q $ hg ci -m merge $ hg log -GT '{rev} {desc} file_adds: [{file_adds}], file_mods: [{file_mods}], file_dels: [{file_dels}], files: [{files}]\n' @ 3 merge file_adds: [], file_mods: [], file_dels: [], files: [] |\ | o 2 c file_adds: [c], file_mods: [], file_dels: [], files: [c] | | o | 1 b file_adds: [b], file_mods: [], file_dels: [], files: [b] |/ o 0 a file_adds: [a], file_mods: [], file_dels: [], files: [a] $ hg log -r . --debug | grep files [1] $ hg log -r . --debug -T json | grep -E '(added|removed|modified)' "added": [], "modified": [], "removed": [], $ hg log -r . --debug -T xml | grep path <paths> </paths>