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>
René Scharfe committed
Sep 3, 2018 at 14:49 UTC
01e0d545ab5f5cf717a04012307204df1e7c9f8f
1 file changed
+40
t/perf/p1451-fsck-skip-list.sh
new
+40
@@ -0,0 +1,40 @@
1
+#!/bin/sh
2
+
3
+test_description='Test fsck skipList performance'
4
+
5
+. ./perf-lib.sh
6
+
7
+test_perf_fresh_repo
8
+
9
+n=1000000
10
+
11
+test_expect_success "setup $n bad commits" '
12
+ for i in $(test_seq 1 $n)
13
+ do
14
+ echo "commit refs/heads/master" &&
15
+ echo "committer C <c@example.com> 1234567890 +0000" &&
16
+ echo "data <<EOF" &&
17
+ echo "$i.Q." &&
18
+ echo "EOF"
19
+ done | q_to_nul | git fast-import
20
+'
21
+
22
+skip=0
23
+while test $skip -le $n
24
+do
25
+ test_expect_success "create skipList for $skip bad commits" '
26
+ git log --format=%H --max-count=$skip |
27
+ sort >skiplist
28
+ '
29
+
30
+ test_perf "fsck with $skip skipped bad commits" '
31
+ git -c fsck.skipList=skiplist fsck
32
+ '
33
+
34
+ case $skip in
35
+ 0) skip=1 ;;
36
+ *) skip=${skip}0 ;;
37
+ esac
38
+done
39
+
40
+test_done