@@ -2,3 +2,29 @@
22# From util/haskell.mk (git submodule update --init)
33CABAL_FLAGS = --enable-tests -fmaintainer -ftutorial
44include util/haskell.mk
5+
6+################################################################################
7+CSV_HEADER = test/header.csv
8+CSV_MEGA = test/massive.csv
9+RAND_ROW = openssl rand -base64 1048576 | paste -sd/
10+TUTORIAL = dist/build/tutorial/tutorial todo
11+PROF_OPTS = +RTS -sstderr -hc -pa -xc
12+
13+################################################################################
14+clean::
15+ rm -f $(CSV_MEGA)
16+ rm -f $(foreach e,aux hp pdf prof ps,tutorial.$(e))
17+
18+################################################################################
19+profile:: $(CSV_MEGA)
20+ $(TUTORIAL) $(PROF_OPTS) < $(CSV_MEGA) > /dev/null
21+ hp2ps -M -b -c tutorial.hp
22+ ps2pdf tutorial.ps
23+
24+################################################################################
25+# Generate a very large CSV file for profiling.
26+$(CSV_MEGA): $(CSV_HEADER)
27+ cp $(CSV_HEADER) $@
28+ for n in `seq 1024`; do (printf "TODO,"; $(RAND_ROW)) >> $@; printf .; done
29+ @ echo # print a newline
30+ du -h $@