mirror of
https://github.com/git/git
synced 2024-08-24 18:26:02 +00:00
![Ævar Arnfjörð Bjarmason](/assets/img/avatar_default.png)
Ever since 5b594f457a
("Threaded grep", 2010-01-25) the number of
threads git-grep uses under PTHREADS has been hardcoded to 8, but
there's no performance test to check whether this is an optimal
setting.
Amend the existing tests for the grep engines to support a mode where
this can be tested, e.g.:
GIT_PERF_GREP_THREADS='1 8 16' GIT_PERF_LARGE_REPO=~/g/linux ./run p782*
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
89 lines
2.1 KiB
Bash
Executable file
89 lines
2.1 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
test_description="Comparison of git-grep's regex engines
|
|
|
|
Set GIT_PERF_7820_GREP_OPTS in the environment to pass options to
|
|
git-grep. Make sure to include a leading space,
|
|
e.g. GIT_PERF_7820_GREP_OPTS=' -i'. Some options to try:
|
|
|
|
-i
|
|
-w
|
|
-v
|
|
-vi
|
|
-vw
|
|
-viw
|
|
|
|
If GIT_PERF_GREP_THREADS is set to a list of threads (e.g. '1 4 8'
|
|
etc.) we will test the patterns under those numbers of threads.
|
|
"
|
|
|
|
. ./perf-lib.sh
|
|
|
|
test_perf_large_repo
|
|
test_checkout_worktree
|
|
|
|
if test -n "$GIT_PERF_GREP_THREADS"
|
|
then
|
|
test_set_prereq PERF_GREP_ENGINES_THREADS
|
|
fi
|
|
|
|
for pattern in \
|
|
'how.to' \
|
|
'^how to' \
|
|
'[how] to' \
|
|
'\(e.t[^ ]*\|v.ry\) rare' \
|
|
'm\(ú\|u\)lt.b\(æ\|y\)te'
|
|
do
|
|
for engine in basic extended perl
|
|
do
|
|
if test $engine != "basic"
|
|
then
|
|
# Poor man's basic -> extended converter.
|
|
pattern=$(echo "$pattern" | sed 's/\\//g')
|
|
fi
|
|
if test $engine = "perl" && ! test_have_prereq PCRE
|
|
then
|
|
prereq="PCRE"
|
|
else
|
|
prereq=""
|
|
fi
|
|
if ! test_have_prereq PERF_GREP_ENGINES_THREADS
|
|
then
|
|
test_perf $prereq "$engine grep$GIT_PERF_7820_GREP_OPTS '$pattern'" "
|
|
git -c grep.patternType=$engine grep$GIT_PERF_7820_GREP_OPTS -- '$pattern' >'out.$engine' || :
|
|
"
|
|
else
|
|
for threads in $GIT_PERF_GREP_THREADS
|
|
do
|
|
test_perf PTHREADS,$prereq "$engine grep$GIT_PERF_7820_GREP_OPTS '$pattern' with $threads threads" "
|
|
git -c grep.patternType=$engine -c grep.threads=$threads grep$GIT_PERF_7820_GREP_OPTS -- '$pattern' >'out.$engine.$threads' || :
|
|
"
|
|
done
|
|
fi
|
|
done
|
|
|
|
if ! test_have_prereq PERF_GREP_ENGINES_THREADS
|
|
then
|
|
test_expect_success "assert that all engines found the same for$GIT_PERF_7820_GREP_OPTS '$pattern'" '
|
|
test_cmp out.basic out.extended &&
|
|
if test_have_prereq PCRE
|
|
then
|
|
test_cmp out.basic out.perl
|
|
fi
|
|
'
|
|
else
|
|
for threads in $GIT_PERF_GREP_THREADS
|
|
do
|
|
test_expect_success PTHREADS "assert that all engines found the same for$GIT_PERF_7820_GREP_OPTS '$pattern' under threading" "
|
|
test_cmp out.basic.$threads out.extended.$threads &&
|
|
if test_have_prereq PCRE
|
|
then
|
|
test_cmp out.basic.$threads out.perl.$threads
|
|
fi
|
|
"
|
|
done
|
|
fi
|
|
done
|
|
|
|
test_done
|