diff options
Diffstat (limited to 'testsuite/tests/perf/compiler/genRecordUpdPerf')
-rwxr-xr-x | testsuite/tests/perf/compiler/genRecordUpdPerf | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/testsuite/tests/perf/compiler/genRecordUpdPerf b/testsuite/tests/perf/compiler/genRecordUpdPerf new file mode 100755 index 0000000000..2ccbb67407 --- /dev/null +++ b/testsuite/tests/perf/compiler/genRecordUpdPerf @@ -0,0 +1,24 @@ +#!/usr/bin/env bash +RECORDS=15 +FIELDS=20 +UPDATES_PER_RECORD=5 +echo "{-# LANGUAGE DuplicateRecordFields #-}" > RecordUpdPerf.hs +echo "module RecordUpdPerf where" >> RecordUpdPerf.hs +for r in $(seq -w 1 $RECORDS); do + echo "data R$r = MkR$r {" >> RecordUpdPerf.hs + for f in $(seq -w 1 $FIELDS); do + echo " r$f :: Int," >> RecordUpdPerf.hs + echo " s${r}_$f :: Int," >> RecordUpdPerf.hs + done + echo " t :: Bool }" >> RecordUpdPerf.hs +done + +for u in $(seq -w 1 $UPDATES_PER_RECORD); do + for r in $(seq -w 1 $RECORDS); do + echo "f${r}_$u r = r {" >> RecordUpdPerf.hs + for f in $(seq -w 1 $FIELDS); do + echo " r$f = $u * $r * $f," >> RecordUpdPerf.hs + done + echo " s${r}_$FIELDS = $u + $r }" >> RecordUpdPerf.hs + done +done |