diff options
author | Taylor Blau <me@ttaylorr.com> | 2024-04-29 16:44:30 -0400 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2024-04-30 13:00:28 -0700 |
commit | 2be05c787ed85ea4ed76b6df42984579d17fdeef (patch) | |
tree | c8d829cd6176702d3fb0808861a681be37a317d9 | |
parent | 36cca0928fe1b2f920a3511d2086a1b4e102a2a1 (diff) | |
download | git-2be05c787ed85ea4ed76b6df42984579d17fdeef.tar.gz |
t/perf: implement performace tests for pseudo-merge bitmaps
Notice: this object is not reachable from any branch.
Implement a straightforward performance test demonstrating the benefit
of pseudo-merge bitmaps by measuring how long it takes to count
reachable objects in a few different scenarios:
- without bitmaps, to demonstrate a reasonable baseline
- with bitmaps, but without pseudo-merges
- with bitmaps and pseudo-merges
Results from running this test on git.git are as follows:
Test this tree
-----------------------------------------------------------------------------------
5333.2: git rev-list --count --all --objects (no bitmaps) 3.46(3.37+0.09)
5333.3: git rev-list --count --all --objects (no pseudo-merges) 0.13(0.11+0.01)
5333.4: git rev-list --count --all --objects (with pseudo-merges) 0.12(0.11+0.01)
Signed-off-by: Taylor Blau <me@ttaylorr.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Notice: this object is not reachable from any branch.
-rwxr-xr-x | t/perf/p5333-pseudo-merge-bitmaps.sh | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/t/perf/p5333-pseudo-merge-bitmaps.sh b/t/perf/p5333-pseudo-merge-bitmaps.sh new file mode 100755 index 0000000000..4bec409d10 --- /dev/null +++ b/t/perf/p5333-pseudo-merge-bitmaps.sh @@ -0,0 +1,32 @@ +#!/bin/sh + +test_description='pseudo-merge bitmaps' +. ./perf-lib.sh + +test_perf_large_repo + +test_expect_success 'setup' ' + git \ + -c bitmapPseudoMerge.all.pattern="refs/" \ + -c bitmapPseudoMerge.all.threshold=now \ + -c bitmapPseudoMerge.all.stableThreshold=never \ + -c bitmapPseudoMerge.all.maxMerges=64 \ + -c pack.writeBitmapLookupTable=true \ + repack -adb +' + +test_perf 'git rev-list --count --all --objects (no bitmaps)' ' + git rev-list --objects --all +' + +test_perf 'git rev-list --count --all --objects (no pseudo-merges)' ' + GIT_TEST_USE_PSEDUO_MERGES=0 \ + git rev-list --objects --all --use-bitmap-index +' + +test_perf 'git rev-list --count --all --objects (with pseudo-merges)' ' + GIT_TEST_USE_PSEDUO_MERGES=1 \ + git rev-list --objects --all --use-bitmap-index +' + +test_done |