On Tue, Mar 22 2022, Jeff Hostetler via GitGitGadget wrote: > From: Jeff Hostetler <jeffhost@xxxxxxxxxxxxx> > > Change p7519 to use `test_seq` and `xargs` rather than a `for` loop > to touch thousands of files. This takes minutes off of test runs > on Windows because of process creation overhead. > > Signed-off-by: Jeff Hostetler <jeffhost@xxxxxxxxxxxxx> > Signed-off-by: Junio C Hamano <gitster@xxxxxxxxx> > --- > t/perf/p7519-fsmonitor.sh | 32 ++++++++++++++++++++------------ > 1 file changed, 20 insertions(+), 12 deletions(-) > > diff --git a/t/perf/p7519-fsmonitor.sh b/t/perf/p7519-fsmonitor.sh > index c8be58f3c76..0611e533951 100755 > --- a/t/perf/p7519-fsmonitor.sh > +++ b/t/perf/p7519-fsmonitor.sh > @@ -72,7 +72,7 @@ then > fi > fi > > -trace_start() { > +trace_start () { > if test -n "$GIT_PERF_7519_TRACE" > then > name="$1" > @@ -91,13 +91,20 @@ trace_start() { > fi > } > > -trace_stop() { > +trace_stop () { > if test -n "$GIT_PERF_7519_TRACE" > then > unset GIT_TRACE2_PERF > fi > } (I think I noted in a previous version): Would be nice to have an optimization change not do unrelated refactoring.... > +touch_files () { > + n=$1 > + d="$n"_files > + > + (cd $d ; test_seq 1 $n | xargs touch ) ...and here we don't &&-chain. > +} > + > test_expect_success "one time repo setup" ' > # set untrackedCache depending on the environment > if test -n "$GIT_PERF_7519_UNTRACKED_CACHE" > @@ -119,10 +126,11 @@ test_expect_success "one time repo setup" ' > fi && > > mkdir 1_file 10_files 100_files 1000_files 10000_files && > - for i in $(test_seq 1 10); do touch 10_files/$i || return 1; done && > - for i in $(test_seq 1 100); do touch 100_files/$i || return 1; done && > - for i in $(test_seq 1 1000); do touch 1000_files/$i || return 1; done && > - for i in $(test_seq 1 10000); do touch 10000_files/$i || return 1; done && > + : 1_file directory should be left empty && > + touch_files 10 && > + touch_files 100 && > + touch_files 1000 && > + touch_files 10000 && > git add 1_file 10_files 100_files 1000_files 10000_files && > git commit -qm "Add files" && > > @@ -133,7 +141,7 @@ test_expect_success "one time repo setup" ' > fi > ' > > -setup_for_fsmonitor() { > +setup_for_fsmonitor () { > # set INTEGRATION_SCRIPT depending on the environment > if test -n "$INTEGRATION_PATH" > then > @@ -173,7 +181,7 @@ test_perf_w_drop_caches () { > test_perf "$@" > } > > -test_fsmonitor_suite() { > +test_fsmonitor_suite () { ditto refactoring..