Re: [PATCH v2 2/2] perf: add test showing exponential growth in path globbing

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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.

Cool.

[...]
> --- /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/

> +"
> +
> +. ./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?

> +	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



[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]