git/t/perf/p4209-pickaxe.sh
Ævar Arnfjörð Bjarmason d90d441c33 perf: add performance test for pickaxe
Add a test for the -G and -S pickaxe options and related options.

This test supports being run with GIT_TEST_LONG=1 to adjust the limit
on the number of commits from 1k to 10k. The 1k limit seems to hit a
good spot on git.git

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2021-05-11 12:47:31 +09:00

70 lines
1.2 KiB
Bash
Executable file

#!/bin/sh
test_description="Test pickaxe performance"
. ./perf-lib.sh
test_perf_default_repo
# Not --max-count, as that's the number of matching commit, so it's
# unbounded. We want to limit our revision walk here.
from_rev_desc=
from_rev=
max_count=1000
if test_have_prereq EXPENSIVE
then
max_count=10000
fi
from_rev=" $(git rev-list HEAD | head -n $max_count | tail -n 1).."
from_rev_desc=" <limit-rev>.."
for icase in \
'' \
'-i '
do
# -S (no regex)
for pattern in \
'int main' \
'æ'
do
for opts in \
'-S'
do
test_perf "git log $icase$opts'$pattern'$from_rev_desc" "
git log --pretty=format:%H $icase$opts'$pattern'$from_rev
"
done
done
# -S (regex)
for pattern in \
'(int|void|null)' \
'if *\([^ ]+ & ' \
'[àáâãäåæñøùúûüýþ]'
do
for opts in \
'--pickaxe-regex -S'
do
test_perf "git log $icase$opts'$pattern'$from_rev_desc" "
git log --pretty=format:%H $icase$opts'$pattern'$from_rev
"
done
done
# -G
for pattern in \
'(int|void|null)' \
'if *\([^ ]+ & ' \
'[àáâãäåæñøùúûüýþ]'
do
for opts in \
'-G'
do
test_perf "git log $icase$opts'$pattern'$from_rev_desc" "
git log --pretty=format:%H $icase$opts'$pattern'$from_rev
"
done
done
done
test_done