Browse Source

fsck: add a performance test for skipList

Create a performance test to see how the skipList implementation
performs. First we setup N bad commits, then we see how progressively
working our way up to 0..N in increments of 10x does. I.e. the
needle(s) in the haystack get progressively more numerous.

Signed-off-by: René Scharfe <l.s.r@web.de>
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
René Scharfe 7 years ago committed by Junio C Hamano
parent
commit
01e0d545ab
  1. 40
      t/perf/p1451-fsck-skip-list.sh

40
t/perf/p1451-fsck-skip-list.sh

@ -0,0 +1,40 @@ @@ -0,0 +1,40 @@
#!/bin/sh

test_description='Test fsck skipList performance'

. ./perf-lib.sh

test_perf_fresh_repo

n=1000000

test_expect_success "setup $n bad commits" '
for i in $(test_seq 1 $n)
do
echo "commit refs/heads/master" &&
echo "committer C <c@example.com> 1234567890 +0000" &&
echo "data <<EOF" &&
echo "$i.Q." &&
echo "EOF"
done | q_to_nul | git fast-import
'

skip=0
while test $skip -le $n
do
test_expect_success "create skipList for $skip bad commits" '
git log --format=%H --max-count=$skip |
sort >skiplist
'

test_perf "fsck with $skip skipped bad commits" '
git -c fsck.skipList=skiplist fsck
'

case $skip in
0) skip=1 ;;
*) skip=${skip}0 ;;
esac
done

test_done
Loading…
Cancel
Save