t/curse: add a Makefile so we can compare speed when using GNU make.

redo: 5.4s
redo -j4: 3.0s
make: 2.3s
make -j4: 1.4s
make SHELL=/bin/dash: 1.2s
make SHELL=/bin/dash -j4: 0.83s

We have some distance to go yet.  Of course, redo is still written in
python, not C, so it's very expensive, and the on-disk dependency store is
very inefficient.
This commit is contained in:
Avery Pennarun 2010-11-21 00:31:48 -08:00
commit de042fc2f2
5 changed files with 44 additions and 16 deletions

26
t/curse/Makefile Normal file
View file

@ -0,0 +1,26 @@
all:
. ./check-1.sh
$(MAKE) 1.n0 2.n0 3.n0
$(MAKE) $(shell seq 10 | sed 's/$$/.n1/')
. ./check-2.sh
%.n0: $(shell seq 10 | sed 's/$$/.n1/')
: >$@
%.n1: $(shell seq 100 | sed 's/$$/.n2/')
echo n1-$* >$@
.PRECIOUS: %.n2
%.n2:
echo n2-$* >$@
echo $* >>$*.count
echo $* >>in.countall
$(MAKE) countall
.PHONY: countall
countall:
echo $@ >>out.countall
echo hello >$@
clean:
rm -f *~ .*~ *.n0 *.n1 *.n2 *.tmp *.count countall *.countall

View file

@ -1,18 +1,5 @@
rm -f in.countall out.countall *.count . ./check-1.sh
touch in.countall out.countall
echo x >x.count
redo-ifchange 1.n0 2.n0 3.n0 redo-ifchange 1.n0 2.n0 3.n0
DEPS=$(seq 10 | sed 's/$/.n1/') DEPS=$(seq 10 | sed 's/$/.n1/')
redo-ifchange $DEPS redo-ifchange $DEPS
COUNT_IN=$(ls *.count | wc -l) . ./check-2.sh
COUNT_OUT=$(cat *.count | wc -l)
if [ "$COUNT_IN" != "$COUNT_OUT" ]; then
echo "expected $COUNT_IN individual writes, got $COUNT_OUT" >&2
exit 42
fi
COUNTALL_IN=$(cat in.countall | wc -l)
COUNTALL_OUT=$(cat out.countall | wc -l)
if [ "$COUNTALL_IN" != "$COUNTALL_OUT" ]; then
echo "expected $COUNTALL_IN allwrites, got $COUNTALL_OUT" >&2
exit 43
fi

3
t/curse/check-1.sh Normal file
View file

@ -0,0 +1,3 @@
rm -f in.countall out.countall *.count
touch in.countall out.countall
echo x >x.count

12
t/curse/check-2.sh Normal file
View file

@ -0,0 +1,12 @@
COUNT_IN=$(ls *.count | wc -l)
COUNT_OUT=$(cat *.count | wc -l)
if [ "$COUNT_IN" != "$COUNT_OUT" ]; then
echo "expected $COUNT_IN individual writes, got $COUNT_OUT" >&2
exit 42
fi
COUNTALL_IN=$(cat in.countall | wc -l)
COUNTALL_OUT=$(cat out.countall | wc -l)
if [ "$COUNTALL_IN" != "$COUNTALL_OUT" ]; then
echo "expected $COUNTALL_IN allwrites, got $COUNTALL_OUT" >&2
exit 43
fi

View file

@ -1,3 +1,3 @@
rm -f *~ .*~ *.n1 *.n2 *.tmp *.count countall *.countall rm -f *~ .*~ *.n0 *.n1 *.n2 *.tmp *.count countall *.countall