git-commit-vandalism/t/perf/p0004-lazy-init-name-hash.sh
René Scharfe c5a9157393 p0004: don't error out if test repo is too small
Repositories with less than 4000 entries are always handled using a
single thread, causing test-lazy-init-name-hash --multi to error out.
Don't abort the whole test script in that case, but simply skip the
multi-threaded performance check.  We can still use it to compare the
single-threaded speed of different versions in that case.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Acked-by: Jeff Hostetler <git@jeffhostetler.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2017-05-16 11:11:56 +09:00

57 lines
1.2 KiB
Bash
Executable File

#!/bin/sh
test_description='Tests multi-threaded lazy_init_name_hash'
. ./perf-lib.sh
test_perf_large_repo
test_checkout_worktree
test_expect_success 'verify both methods build the same hashmaps' '
test-lazy-init-name-hash --dump --single >out.single &&
if test-lazy-init-name-hash --dump --multi >out.multi
then
test_set_prereq REPO_BIG_ENOUGH_FOR_MULTI &&
sort <out.single >sorted.single &&
sort <out.multi >sorted.multi &&
test_cmp sorted.single sorted.multi
fi
'
test_expect_success 'calibrate' '
entries=$(wc -l <out.single) &&
case $entries in
?) count=1000000 ;;
??) count=100000 ;;
???) count=10000 ;;
????) count=1000 ;;
?????) count=100 ;;
??????) count=10 ;;
*) count=1 ;;
esac &&
export count &&
case $entries in
1) entries_desc="1 entry" ;;
*) entries_desc="$entries entries" ;;
esac &&
case $count in
1) count_desc="1 round" ;;
*) count_desc="$count rounds" ;;
esac &&
desc="$entries_desc, $count_desc" &&
export desc
'
test_perf "single-threaded, $desc" "
test-lazy-init-name-hash --single --count=$count
"
test_perf REPO_BIG_ENOUGH_FOR_MULTI "multi-threaded, $desc" "
test-lazy-init-name-hash --multi --count=$count
"
test_done