Am 05.04.2017 um 19:38 schrieb git@xxxxxxxxxxxxxxxxx: > From: Jeff Hostetler <jeffhost@xxxxxxxxxxxxx> > > Signed-off-by: Jeff Hostetler <jeffhost@xxxxxxxxxxxxx> > --- > 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)} ' </dev/null It's faster because it avoids calling seq thousands of times. > + > +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é