mirror of
https://github.com/git/git.git
synced 2024-12-03 15:03:43 +08:00
c5a9157393
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>
57 lines
1.2 KiB
Bash
Executable File
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
|