Fixes the issues noted in v3, see <20170510225316.31680-1-avarab@xxxxxxxxx> (https://public-inbox.org/git/20170510225316.31680-1-avarab@xxxxxxxxx/). In addition I was wrong about for-each-ref not being subjected to this slowdown, I was just screwing up the testcase. Fix that. Now: $ GIT_PERF_REPEAT_COUNT=1 GIT_PERF_MAKE_OPTS="-j6 NO_OPENSSL=Y NO_WILDMATCH=YesPlease" ./run v1.9.5 v2.12.0 p0100-globbing.sh Test v1.9.5 v2.12.0 ------------------------------------------------------------------------------------------------- 0100.2: refglob((a*)^nb) against tag (a^100).t; n = 1 0.00(0.00+0.00) 0.00(0.00+0.00) = 0100.3: refglob((a*)^nb) against tag (a^100).t; n = 2 0.00(0.00+0.00) 0.00(0.00+0.00) = 0100.4: refglob((a*)^nb) against tag (a^100).t; n = 3 0.00(0.00+0.00) 0.00(0.00+0.00) = 0100.5: refglob((a*)^nb) against tag (a^100).t; n = 4 0.00(0.00+0.00) 0.01(0.00+0.00) +inf 0100.6: refglob((a*)^nb) against tag (a^100).t; n = 5 0.00(0.00+0.00) 0.16(0.15+0.00) +inf 0100.7: refglob((a*)^nb) against tag (a^100).t; n = 6 0.00(0.00+0.00) 2.73(2.71+0.00) +inf 0100.8: fileglob((a*)^nb) against file (a^100).t; n = 1 0.00(0.00+0.00) 0.00(0.00+0.00) = 0100.9: fileglob((a*)^nb) against file (a^100).t; n = 2 0.00(0.00+0.00) 0.00(0.00+0.00) = 0100.10: fileglob((a*)^nb) against file (a^100).t; n = 3 0.00(0.00+0.00) 0.00(0.00+0.00) = 0100.11: fileglob((a*)^nb) against file (a^100).t; n = 4 0.00(0.00+0.00) 0.01(0.00+0.00) +inf 0100.12: fileglob((a*)^nb) against file (a^100).t; n = 5 0.00(0.00+0.00) 0.16(0.15+0.00) +inf 0100.13: fileglob((a*)^nb) against file (a^100).t; n = 6 0.00(0.00+0.00) 2.75(2.73+0.00) +inf Ævar Arnfjörð Bjarmason (2): perf: add function to setup a fresh test repo perf: add test showing exponential growth in path globbing t/perf/README | 1 + t/perf/p0100-globbing.sh | 43 +++++++++++++++++++++++++++++++++++++++++++ t/perf/perf-lib.sh | 17 +++++++++++++---- 3 files changed, 57 insertions(+), 4 deletions(-) create mode 100755 t/perf/p0100-globbing.sh -- 2.11.0