From: René Scharfe Date: Thu, 06 Apr 2017 20:20:49 GMT Subject: Re: [PATCH v5 1/4] p0004-read-tree: perf test to time read-tree Message-ID: <6937b76e-9bbf-7ce5-8605-e09f556f8a26@web.de> In-Reply-To: <20170405173809.3098-2-git@jeffhostetler.com> Am 05.04.2017 um 19:38 schrieb git@jeffhostetler.com: > From: Jeff Hostetler > > Signed-off-by: Jeff Hostetler > --- > t/perf/p0004-read-tree.sh | 116 ++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 116 insertions(+) > create mode 100755 t/perf/p0004-read-tree.sh > > diff --git a/t/perf/p0004-read-tree.sh b/t/perf/p0004-read-tree.sh > new file mode 100755 > index 0000000..5d8bbf5 > --- /dev/null > +++ b/t/perf/p0004-read-tree.sh > @@ -0,0 +1,116 @@ > +#!/bin/sh > + > +test_description="Tests performance of read-tree" > + > +. ./perf-lib.sh > + > +test_perf_default_repo > +test_checkout_worktree > + > +## usage: dir depth width files > +make_paths () { > + for f in $(seq $4) > + do > + echo $1/file$f > + done; > + if test $2 -gt 0; > + then > + for w in $(seq $3) > + do > + make_paths $1/dir$w $(($2 - 1)) $3 $4 > + done > + fi > + return 0 > +} "make_paths xxx_dir_xxx 5 10 9" takes more than a minute for me. Providing its results as a file would be quicker but less flexible. The following command prints the same result in less than a second. awk -v dir=xxx_dir_xxx -v depth=5 -v width=10 -v files=9 ' function make_paths(dir, depth, width, files, i) { for (i = 1; i <= files; i++) { print dir "/file" i } if (depth > 0) { for (i = 1; i <= width; i++) { make_paths(dir "/dir" i, depth - 1, width, files) } } } END {make_paths(dir, depth, width, files)} ' + > +fill_index () { > + make_paths $1 $2 $3 $4 | > + sed "s/^/100644 $EMPTY_BLOB /" | You could add the prefix to the script above and avoid this sed call as well. René