Mercurial > hg
annotate tests/test-encode.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 | 55c6ebd11cb9 |
children |
rev | line source |
---|---|
12416 | 1 Test encode/decode filters |
1258 | 2 |
49621
55c6ebd11cb9
tests: run many tests in $TESTTMP/repo instead of $TESTTMP
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
48339
diff
changeset
|
3 $ hg init repo |
55c6ebd11cb9
tests: run many tests in $TESTTMP/repo instead of $TESTTMP
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
48339
diff
changeset
|
4 $ cd repo |
12416 | 5 $ cat > .hg/hgrc <<EOF |
6 > [encode] | |
7 > not.gz = tr [:lower:] [:upper:] | |
8 > *.gz = gzip -d | |
9 > [decode] | |
10 > not.gz = tr [:upper:] [:lower:] | |
11 > *.gz = gzip | |
12 > EOF | |
13 $ echo "this is a test" | gzip > a.gz | |
14 $ echo "this is a test" > not.gz | |
15 $ hg add * | |
16 $ hg ci -m "test" | |
1258 | 17 |
12416 | 18 no changes |
19 | |
20 $ hg status | |
21 $ touch * | |
22 | |
23 no changes | |
24 | |
25 $ hg status | |
26 | |
27 check contents in repo are encoded | |
1258 | 28 |
14182
ec5886db9dc6
tests: fix deprecated use of hg debugdata/debugindex
Sune Foldager <cryo@cyanite.org>
parents:
12416
diff
changeset
|
29 $ hg debugdata a.gz 0 |
12416 | 30 this is a test |
14182
ec5886db9dc6
tests: fix deprecated use of hg debugdata/debugindex
Sune Foldager <cryo@cyanite.org>
parents:
12416
diff
changeset
|
31 $ hg debugdata not.gz 0 |
12416 | 32 THIS IS A TEST |
33 | |
34 check committed content was decoded | |
1258 | 35 |
12416 | 36 $ gunzip < a.gz |
37 this is a test | |
38 $ cat not.gz | |
39 this is a test | |
40 $ rm * | |
41 $ hg co -C | |
42 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
1258 | 43 |
12416 | 44 check decoding of our new working dir copy |
1258 | 45 |
12416 | 46 $ gunzip < a.gz |
47 this is a test | |
48 $ cat not.gz | |
49 this is a test | |
1258 | 50 |
12416 | 51 check hg cat operation |
6093
f5b00b6e426a
Option --decode for hg cat to apply decode filters.
Jesse Glick <jesse.glick@sun.com>
parents:
3853
diff
changeset
|
52 |
12416 | 53 $ hg cat a.gz |
54 this is a test | |
55 $ hg cat --decode a.gz | gunzip | |
56 this is a test | |
57 $ mkdir subdir | |
58 $ cd subdir | |
59 $ hg -R .. cat ../a.gz | |
60 this is a test | |
61 $ hg -R .. cat --decode ../a.gz | gunzip | |
62 this is a test | |
37461
538353b80676
procutil: fix error message of tempfile filter
Yuya Nishihara <yuya@tcha.org>
parents:
16913
diff
changeset
|
63 $ cd .. |
538353b80676
procutil: fix error message of tempfile filter
Yuya Nishihara <yuya@tcha.org>
parents:
16913
diff
changeset
|
64 |
538353b80676
procutil: fix error message of tempfile filter
Yuya Nishihara <yuya@tcha.org>
parents:
16913
diff
changeset
|
65 check tempfile filter |
538353b80676
procutil: fix error message of tempfile filter
Yuya Nishihara <yuya@tcha.org>
parents:
16913
diff
changeset
|
66 |
538353b80676
procutil: fix error message of tempfile filter
Yuya Nishihara <yuya@tcha.org>
parents:
16913
diff
changeset
|
67 $ hg cat a.gz --decode --config 'decode.*.gz=tempfile:gzip -c INFILE > OUTFILE' | gunzip |
538353b80676
procutil: fix error message of tempfile filter
Yuya Nishihara <yuya@tcha.org>
parents:
16913
diff
changeset
|
68 this is a test |
538353b80676
procutil: fix error message of tempfile filter
Yuya Nishihara <yuya@tcha.org>
parents:
16913
diff
changeset
|
69 $ hg cat a.gz --decode --config 'decode.*.gz=tempfile:sh -c "exit 1"' |
538353b80676
procutil: fix error message of tempfile filter
Yuya Nishihara <yuya@tcha.org>
parents:
16913
diff
changeset
|
70 abort: command '*' failed: exited with status 1 (glob) |
538353b80676
procutil: fix error message of tempfile filter
Yuya Nishihara <yuya@tcha.org>
parents:
16913
diff
changeset
|
71 [255] |
16913
f2719b387380
tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents:
14182
diff
changeset
|
72 |
f2719b387380
tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents:
14182
diff
changeset
|
73 $ cd .. |