Re: [PATCH v2 2/2] perf: add test showing exponential growth in path globbing
Hi,
Ævar Arnfjörð Bjarmason wrote:
> Add a test showing that ls-files times grow exponentially in the face
> of some pathological globs, whereas refglobs via for-each-ref don't in
> practice suffer from the same issue.
Show 9 quoted lines
> --- /dev/null
> +++ b/t/perf/p0100-globbing.sh
> @@ -0,0 +1,48 @@
> +#!/bin/sh
> +
> +test_description="Tests pathalogical globbing performance
> +
> +Shows how Git's globbing performance performs when given the sort of
> +pathalogical patterns described in at https://research.swtch.com/glob
s/pathalogical/pathological/
Show 23 quoted lines
> +"
> +
> +. ./perf-lib.sh
> +
> +test_globs_big='10 25 50 75 100'
> +test_globs_small='1 2 3 4 5 6'
> +
> +test_perf_fresh_repo
> +
> +test_expect_success 'setup' '
> + for i in $(test_seq 1 100)
> + do
> + printf "a" >>refname &&
> + for j in $(test_seq 1 $i)
> + do
> + printf "a*" >>refglob.$i
> + done &&
> + echo b >>refglob.$i
> + done &&
> + test_commit $(cat refname) &&
> + for i in $(test_seq 1 100)
> + do
> + echo git tag $(cat refname)-$i
Leftover echo from debugging?
Show 17 quoted lines
> + done &&
> + test_commit hello
> +'
> +
> +for i in $test_globs_big
> +do
> + test_perf "refglob((a*)^nb) against tag a^100; n = $i" '
> + git for-each-ref "refs/tags/$(cat refglob.'$i')b"
> + '
> +done
> +
> +for i in $test_globs_small
> +do
> + test_perf "fileglob((a*)^nb) against file (a^100).t; n = $i" '
> + git ls-files "$(cat refglob.'$i')b"
> + '
> +done
The rest looks sensible.
Thanks, Jonathan