summaryrefslogtreecommitdiff
path: root/t/perf/p1451-fsck-skip-list.sh
diff options
context:
space:
mode:
authorRené Scharfe <l.s.r@web.de>2018-09-03 14:49:25 (GMT)
committerJunio C Hamano <gitster@pobox.com>2018-09-12 22:17:46 (GMT)
commit01e0d545ab5f5cf717a04012307204df1e7c9f8f (patch)
tree51ebba670aa557ec47c0dd1d50bb5096f1d96252 /t/perf/p1451-fsck-skip-list.sh
parent6cb173b5b62c2e86febe06b8575ae808533a3834 (diff)
downloadgit-01e0d545ab5f5cf717a04012307204df1e7c9f8f.zip
git-01e0d545ab5f5cf717a04012307204df1e7c9f8f.tar.gz
git-01e0d545ab5f5cf717a04012307204df1e7c9f8f.tar.bz2
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>
Diffstat (limited to 't/perf/p1451-fsck-skip-list.sh')
-rwxr-xr-xt/perf/p1451-fsck-skip-list.sh40
1 files changed, 40 insertions, 0 deletions
diff --git a/t/perf/p1451-fsck-skip-list.sh b/t/perf/p1451-fsck-skip-list.sh
new file mode 100755
index 0000000..c2b97d2
--- /dev/null
+++ b/t/perf/p1451-fsck-skip-list.sh
@@ -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