summaryrefslogtreecommitdiff
path: root/testsuite/tests/perf/compiler/genRecordUpdPerf
diff options
context:
space:
mode:
Diffstat (limited to 'testsuite/tests/perf/compiler/genRecordUpdPerf')
-rwxr-xr-xtestsuite/tests/perf/compiler/genRecordUpdPerf24
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