@@ -4,7 +4,7 @@ import Criterion.Main ( defaultMain, bench, nf )
4
4
import Parser ( parseEnvironment , Expr (Int , App ) )
5
5
import LambdaToSKI ( compileBracket )
6
6
import CLTerm
7
- import Kiselyov ( compileBulk , compileEta )
7
+ import Kiselyov
8
8
import GraphReduction ( allocate , normalForm , toString , Graph )
9
9
import Data.Maybe (fromJust )
10
10
import Data.STRef ( STRef )
@@ -25,6 +25,18 @@ loadTestCaseBulk src = do
25
25
expr = compileBulk pEnv
26
26
return expr
27
27
28
+ loadTestCaseBreakBulkLinear :: SourceCode -> IO CL
29
+ loadTestCaseBreakBulkLinear src = do
30
+ let pEnv = parseEnvironment src
31
+ expr = compileBulkLinear pEnv
32
+ return expr
33
+
34
+ loadTestCaseBreakBulkLog :: SourceCode -> IO CL
35
+ loadTestCaseBreakBulkLog src = do
36
+ let pEnv = parseEnvironment src
37
+ expr = compileBulkLog pEnv
38
+ return expr
39
+
28
40
loadTestCaseEta :: SourceCode -> IO CL
29
41
loadTestCaseEta src = do
30
42
let pEnv = parseEnvironment src
@@ -72,6 +84,19 @@ benchmarks = do
72
84
akkBulk <- loadTestCaseBulk ackermann
73
85
gauBulk <- loadTestCaseBulk gaussian
74
86
takBulk <- loadTestCaseBulk BenchmarkSources. tak
87
+ facBulkLinear <- loadTestCaseBreakBulkLinear factorial
88
+ fibBulkLinear <- loadTestCaseBreakBulkLinear fibonacci
89
+ akkBulkLinear <- loadTestCaseBreakBulkLinear ackermann
90
+ gauBulkLinear <- loadTestCaseBreakBulkLinear gaussian
91
+ takBulkLinear <- loadTestCaseBreakBulkLinear BenchmarkSources. tak
92
+ facBulkLog <- loadTestCaseBreakBulkLog factorial
93
+ fibBulkLog <- loadTestCaseBreakBulkLog fibonacci
94
+ akkBulkLog <- loadTestCaseBreakBulkLog ackermann
95
+ gauBulkLog <- loadTestCaseBreakBulkLog gaussian
96
+ takBulkLog <- loadTestCaseBreakBulkLog BenchmarkSources. tak
97
+
98
+
99
+
75
100
76
101
-- sanity checks
77
102
print $ graphTest fac
@@ -84,25 +109,37 @@ benchmarks = do
84
109
85
110
defaultMain [
86
111
bench " factorial Graph-Reduce" $ nf graphTest fac
87
- , bench " factorial Graph-Reduce-Eta" $ nf graphTest facEta
112
+ , bench " factorial Graph-Reduce-Eta" $ nf graphTest facEta
113
+ , bench " factorial Graph-Reduce-Lin" $ nf graphTest facBulkLinear
114
+ , bench " factorial Graph-Reduce-Log" $ nf graphTest facBulkLog
88
115
, bench " factorial HHI-Reduce" $ nf reducerTest fac
89
116
, bench " factorial HHI-Eta" $ nf reducerTest facEta
90
117
, bench " factorial HHI-Bulk" $ nf reducerTest facBulk
91
118
, bench " factorial HHI-Bulk-Log" $ nf reducerTestLog facBulk
119
+ , bench " factorial HHI-Break-Bulk" $ nf reducerTest facBulkLinear
120
+ , bench " factorial HHI-Break-Log" $ nf reducerTestLog facBulkLog
92
121
, bench " factorial Native" $ nf fact 100
93
122
, bench " fibonacci Graph-Reduce" $ nf graphTest fib
94
123
, bench " fibonacci Graph-Reduce-Eta" $ nf graphTest fibEta
124
+ , bench " fibonacci Graph-Reduce-Lin" $ nf graphTest fibBulkLinear
125
+ , bench " fibonacci Graph-Reduce-Log" $ nf graphTest fibBulkLog
95
126
, bench " fibonacci HHI-Reduce" $ nf reducerTest fib
96
127
, bench " fibonacci HHI-Eta" $ nf reducerTest fibEta
97
128
, bench " fibonacci HHi-Bulk" $ nf reducerTest fibBulk
98
129
, bench " fibonacci HHI-Bulk-Log" $ nf reducerTestLog fibBulk
130
+ , bench " fibonacci HHI-Break-Bulk" $ nf reducerTest fibBulkLinear
131
+ , bench " fibonacci HHI-Break-Log" $ nf reducerTestLog fibBulkLog
99
132
, bench " fibonacci Native" $ nf fibo 10
100
133
, bench " ackermann Graph-Reduce" $ nf graphTest akk
101
134
, bench " ackermann Graph-Reduce-Eta" $ nf graphTest akkEta
135
+ , bench " ackermann Graph-Reduce-Lin" $ nf graphTest akkBulkLinear
136
+ , bench " ackermann Graph-Reduce-Log" $ nf graphTest akkBulkLog
102
137
, bench " ackermann HHI-Reduce" $ nf reducerTest akk
103
138
, bench " ackermann HHI-Eta" $ nf reducerTest akkEta
104
139
, bench " ackermann HHI-Bulk" $ nf reducerTest akkBulk
105
140
, bench " ackermann HHI-Bulk-Log" $ nf reducerTestLog akkBulk
141
+ , bench " ackermann HHI-Break-Bulk" $ nf reducerTest akkBulkLinear
142
+ , bench " ackermann HHI-Break-Log" $ nf reducerTestLog akkBulkLog
106
143
, bench " ackermann Native" $ nf ack_2 2
107
144
-- , bench "gaussian Graph-Reduce" $ nf graphTest gau
108
145
-- , bench "gaussian Graph-Reduce-Eta" $ nf graphTest gauEta
@@ -113,10 +150,14 @@ benchmarks = do
113
150
-- , bench "gaussian Native" $ nf gaussianSum 100
114
151
, bench " tak Graph-Reduce" $ nf graphTest tak
115
152
, bench " tak Graph-Reduce-Eta" $ nf graphTest takEta
153
+ , bench " tak Graph-Reduce-Lin" $ nf graphTest takBulkLinear
154
+ , bench " tak Graph-Reduce-Log" $ nf graphTest takBulkLog
116
155
, bench " tak HHI-Reduce" $ nf reducerTest tak
117
156
, bench " tak HHI-Eta" $ nf reducerTest takEta
118
157
, bench " tak HHI-Bulk" $ nf reducerTest takBulk
119
158
, bench " tak HHI-Bulk-Log" $ nf reducerTestLog takBulk
159
+ , bench " tak HHI-Break-Bulk" $ nf reducerTest takBulkLinear
160
+ , bench " tak HHI-Break-Log" $ nf reducerTestLog takBulkLog
120
161
, bench " tak Native" $ nf tak1 (7 ,4 ,2 )
121
162
]
122
163
return ()
0 commit comments