on master help sign in
Add record bench file
commita993a1987318894314a8fc1658bec10b767a2891 authorjmite <jmitdase@gmail.com> dateThu 20 Aug 2015, 11:46 (11 years ago) parentad8b4bc
2 files changed+79−2
bench/CompilerBenchmarks.elm+3−2 bench/src/RecordBench.elm+76
bench/CompilerBenchmarks.elm+3−2
@@ -21,7 +21,8 @@ import RecordBench
2121
2222mySuite =
2323 Benchmark.Suite "My Suite"
24− [ Benchmark.bench1 "Access 20-field record 200 times" RecordBench.sumRandomElems indices200
24+ [ Benchmark.bench1 "Access 20-field record 200 times: " RecordBench.sumRandomElems indices200
25+
2526 , Benchmark.bench1 "Make and sum dict, 10000 elems: " LargeDictionary.addNToDictAndSum 10000
2627 , Benchmark.bench1 "Make and sum dict, 50 elems: " LargeDictionary.addNToDictAndSum 50
2728
@@ -40,7 +41,7 @@ mySuite =
4041 , Benchmark.bench2 "200 lookups in array of 500 elems: " ArrayBench.randomLookups indices200 (Array.fromList [1 .. 500] )
4142 , Benchmark.bench2 "200 lookups in list of 500 elems: " ListBench.randomLookups indices200 ([1 .. 500] )
4243
43− , Benchmark.bench1 "30s simulated animation @ 30fps: " AnimateBench.runAnimation timeSteps30s
44+ , Benchmark.bench1 "30s simulated animation @ 30fps: " AnimateBench.runAnimation timeSteps30s
4445 ]
4546
4647
bench/src/RecordBench.elmnew file+76
@@ -0,0 +1,76 @@
1+module RecordBench where
2+
3+type alias BigRecord =
4+ { myLargeNamedField1 : Float
5+ , myLargeNamedField2 : Float
6+ , myLargeNamedField3 : Float
7+ , myLargeNamedField4 : Float
8+ , myLargeNamedField5 : Float
9+ , myLargeNamedField6 : Float
10+ , myLargeNamedField7 : Float
11+ , myLargeNamedField8 : Float
12+ , myLargeNamedField9 : Float
13+ , myLargeNamedField10 : Float
14+ , myLargeNamedField11 : Float
15+ , myLargeNamedField12 : Float
16+ , myLargeNamedField13 : Float
17+ , myLargeNamedField14 : Float
18+ , myLargeNamedField15 : Float
19+ , myLargeNamedField16 : Float
20+ , myLargeNamedField17 : Float
21+ , myLargeNamedField18 : Float
22+ , myLargeNamedField19 : Float
23+ , myLargeNamedField20 : Float
24+ }
25+
26+defaultRec =
27+ BigRecord 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0
28+ 11.0 12.0 13.0 14.0 15.0 16.0 17.0 18.0 19.0 20.0
29+
30+getField i =
31+ case (i % 20) of
32+ 0 ->
33+ defaultRec.myLargeNamedField20
34+ 1 ->
35+ defaultRec.myLargeNamedField1
36+ 2 ->
37+ defaultRec.myLargeNamedField2
38+ 3 ->
39+ defaultRec.myLargeNamedField3
40+ 4 ->
41+ defaultRec.myLargeNamedField4
42+ 5 ->
43+ defaultRec.myLargeNamedField5
44+ 6 ->
45+ defaultRec.myLargeNamedField6
46+ 7 ->
47+ defaultRec.myLargeNamedField7
48+ 8 ->
49+ defaultRec.myLargeNamedField8
50+ 9 ->
51+ defaultRec.myLargeNamedField9
52+ 10 ->
53+ defaultRec.myLargeNamedField10
54+ 11 ->
55+ defaultRec.myLargeNamedField11
56+ 12 ->
57+ defaultRec.myLargeNamedField12
58+ 13 ->
59+ defaultRec.myLargeNamedField13
60+ 14 ->
61+ defaultRec.myLargeNamedField14
62+ 15 ->
63+ defaultRec.myLargeNamedField15
64+ 16 ->
65+ defaultRec.myLargeNamedField16
66+ 17 ->
67+ defaultRec.myLargeNamedField17
68+ 18 ->
69+ defaultRec.myLargeNamedField18
70+ 19 ->
71+ defaultRec.myLargeNamedField19
72+
73+
74+sumRandomElems : List Int -> Float
75+sumRandomElems randomInts =
76+ List.foldr (\i sumSoFar -> (getField i) + sumSoFar ) 0.0 randomInts