on master help sign in
Add tuple and small tests
commit3a25eda774a770bc54e5dcf08ac5354e5b2d80e5 authorjmite <jmitdase@gmail.com> dateThu 20 Aug 2015, 11:58 (11 years ago) parenta993a19
4 files changed+120
bench/CompilerBenchmarks.elm+6 bench/src/SmallRecordBench.elm+42 bench/src/SmallTupleBench.elm+30 bench/src/TupleBench.elm+42
bench/CompilerBenchmarks.elm+6
@@ -12,6 +12,9 @@ import ArrayBench
1212import ListBench
1313import AnimateBench
1414import RecordBench
15+import SmallRecordBench
16+import TupleBench
17+import SmallTupleBench
1518
1619
1720{-| Compile this with --output=Benchmarks.html to generate
@@ -22,6 +25,9 @@ import RecordBench
2225mySuite =
2326 Benchmark.Suite "My Suite"
2427 [ Benchmark.bench1 "Access 20-field record 200 times: " RecordBench.sumRandomElems indices200
28+ , Benchmark.bench1 "Access 9-field record 200 times: " SmallRecordBench.sumRandomElems indices200
29+ , Benchmark.bench1 "Access 9-field tuple 200 times: " TupleBench.sumRandomElems indices200
30+ , Benchmark.bench1 "Access 3-field tuple 200 times: " SmallTupleBench.sumRandomElems indices200
2531
2632 , Benchmark.bench1 "Make and sum dict, 10000 elems: " LargeDictionary.addNToDictAndSum 10000
2733 , Benchmark.bench1 "Make and sum dict, 50 elems: " LargeDictionary.addNToDictAndSum 50
bench/src/SmallRecordBench.elmnew file+42
@@ -0,0 +1,42 @@
1+module SmallRecordBench where
2+
3+type alias SmallRecord =
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+ }
14+
15+defaultRec =
16+ SmallRecord 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0
17+
18+getField i =
19+ case (i % 9) of
20+ 1 ->
21+ defaultRec.myLargeNamedField1
22+ 2 ->
23+ defaultRec.myLargeNamedField2
24+ 3 ->
25+ defaultRec.myLargeNamedField3
26+ 4 ->
27+ defaultRec.myLargeNamedField4
28+ 5 ->
29+ defaultRec.myLargeNamedField5
30+ 6 ->
31+ defaultRec.myLargeNamedField6
32+ 7 ->
33+ defaultRec.myLargeNamedField7
34+ 8 ->
35+ defaultRec.myLargeNamedField8
36+ 0 ->
37+ defaultRec.myLargeNamedField9
38+
39+
40+sumRandomElems : List Int -> Float
41+sumRandomElems randomInts =
42+ List.foldr (\i sumSoFar -> (getField i) + sumSoFar ) 0.0 randomInts
bench/src/SmallTupleBench.elmnew file+30
@@ -0,0 +1,30 @@
1+module SmallTupleBench where
2+
3+type alias SmallTuple =
4+ ( Float
5+ , Float
6+ , Float
7+ , Float
8+ , Float
9+ , Float
10+ , Float
11+ , Float
12+ , Float
13+ )
14+
15+defaultTuple =
16+ (1.0, 2.0, 3.0)
17+
18+getField (x1, x2, x3) i =
19+ case (i % 3) of
20+ 1 ->
21+ x1
22+ 2 ->
23+ x2
24+ 0 ->
25+ x3
26+
27+
28+sumRandomElems : List Int -> Float
29+sumRandomElems randomInts =
30+ List.foldr (\i sumSoFar -> (getField defaultTuple i) + sumSoFar ) 0.0 randomInts
bench/src/TupleBench.elmnew file+42
@@ -0,0 +1,42 @@
1+module TupleBench where
2+
3+type alias BigTuple =
4+ ( Float
5+ , Float
6+ , Float
7+ , Float
8+ , Float
9+ , Float
10+ , Float
11+ , Float
12+ , Float
13+ )
14+
15+defaultTuple =
16+ (1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0)
17+
18+getField (x1, x2, x3, x4, x5, x6, x7, x8, x9) i =
19+ case (i % 9) of
20+ 1 ->
21+ x1
22+ 2 ->
23+ x2
24+ 3 ->
25+ x3
26+ 4 ->
27+ x4
28+ 5 ->
29+ x5
30+ 6 ->
31+ x6
32+ 7 ->
33+ x7
34+ 8 ->
35+ x8
36+ 0 ->
37+ x9
38+
39+
40+sumRandomElems : List Int -> Float
41+sumRandomElems randomInts =
42+ List.foldr (\i sumSoFar -> (getField defaultTuple i) + sumSoFar ) 0.0 randomInts