@@ -1,72 +1,78 @@
1−{-# LANGUAGE FlexibleContexts, GADTs, CPP #-}
1+{-# LANGUAGE CPP #-}
2+{-# LANGUAGE FlexibleContexts #-}
3+{-# LANGUAGE GADTs #-}
24
35module Main where
46
7+import qualified ExtEff.Bench as ExtEff
8+import qualified Freer.Bench as Freer
9+import qualified Fused.Bench as Fused
510import Gauge (bench, bgroup, nf, nfAppIO)
611import Gauge.Main (defaultMain)
7−import qualified Weigh
8−
9−import qualified Fused.Bench as Fused
10−import qualified Freer.Bench as Freer
11−import qualified Shallow.Bench as Shallow
1212import qualified MTL.Bench as MTL
1313import qualified Poly.Bench as Poly
14−import qualified ExtEff.Bench as ExtEff
14+import qualified Shallow.Bench as Shallow
15+import qualified Weigh
1516
1617wruns :: Int
1718wruns = 1
1819
1920runs :: Int
20−runs = 10000
21+runs = 100000
2122
2223main :: IO ()
2324main = do
2425 putStrLn "*** Time benchmarks ***"
2526 defaultMain
26− [
27− bgroup "Countdown"
28− [ bgroup "Put"
29− [ bench "fused-effects" (nf Fused.countDownBench runs)
30− , bench "mtl" (nf MTL.countDownBench runs)
31− , bench "polysemy" (nf Poly.countDownBench runs)
32− , bench "freer-simple" (nf Freer.countDownBench runs)
33− , bench "extensible-effects" (nf ExtEff.countDownBench runs)
34− , bench "shallow" (nf Shallow.countDownBench runs)
27+ [ bgroup
28+ "Countdown"
29+ [ bgroup
30+ "Put"
31+ [ bench "fused-effects" (nf Fused.countDownBench runs),
32+ bench "mtl" (nf MTL.countDownBench runs),
33+ bench "polysemy" (nf Poly.countDownBench runs),
34+ bench "freer-simple" (nf Freer.countDownBench runs),
35+ bench "extensible-effects" (nf ExtEff.countDownBench runs),
36+ bench "shallow" (nf Shallow.countDownBench runs)
37+ ],
38+ bgroup
39+ "Put+Exc"
40+ [ bench "fused-effects" (nf Fused.countDownExcBench runs),
41+ bench "mtl" (nf MTL.countDownExcBench runs),
42+ bench "polysemy" (nf Poly.countDownExcBench runs),
43+ bench "freer-simple" (nf Freer.countDownExcBench runs),
44+ bench "extensible-effects" (nf ExtEff.countDownExcBench runs),
45+ bench "shallow" (nf Shallow.countDownExcBench runs)
46+ ]
47+ ],
48+ bgroup
49+ "HTTP"
50+ [ bench "fused-effects" (nfAppIO Fused.httpBench runs),
51+ bench "polysemy" (nfAppIO Poly.httpBench runs),
52+ bench "extensible-effects" (nfAppIO ExtEff.httpBench runs),
53+ bench "Deep embedding" (nfAppIO MTL.httpBench runs),
54+ bench "Shallow embedding" (nfAppIO Shallow.httpBench runs),
55+ bench "freer-simple" (nfAppIO Freer.httpBench runs)
3556 ]
36− , bgroup "Put+Exc"
37− [ bench "fused-effects" (nf Fused.countDownExcBench runs)
38− , bench "mtl" (nf MTL.countDownExcBench runs)
39− , bench "polysemy" (nf Poly.countDownExcBench runs)
40− , bench "freer-simple" (nf Freer.countDownExcBench runs)
41− , bench "extensible-effects" (nf ExtEff.countDownExcBench runs)
42− , bench "shallow" (nf Shallow.countDownExcBench runs)
43− ]
44− ]
45− , bgroup "HTTP"
46− [ bench "fused-effects" (nfAppIO Fused.httpBench runs)
47− , bench "polysemy" (nfAppIO Poly.httpBench runs)
48− , bench "extensible-effects" (nfAppIO ExtEff.httpBench runs)
49− , bench "Deep embedding" (nfAppIO MTL.httpBench runs)
50− , bench "Shallow embedding" (nfAppIO Shallow.httpBench runs)
51− , bench "freer-simple" (nfAppIO Freer.httpBench runs)
52− ]
5357 ]
5458
5559 putStrLn "*** Space benchmarks (these will take some time to run) ***"
5660 Weigh.mainWith $ do
57− Weigh.wgroup "Countdown" $ sequence_
58− [ Weigh.func "fused-effects" Fused.countDownBench wruns
59− , Weigh.func "mtl" MTL.countDownBench wruns
60− , Weigh.func "polysemy" Poly.countDownBench wruns
61− , Weigh.func "freer-simple" Freer.countDownBench wruns
62− , Weigh.func "extensible-effects" ExtEff.countDownBench wruns
63− , Weigh.func "shallow" Shallow.countDownBench wruns
64− ]
65− Weigh.wgroup "Countdown + exc" $ sequence_
66− [ Weigh.func "fused-effects" Fused.countDownExcBench wruns
67− , Weigh.func "mtl" MTL.countDownExcBench wruns
68− , Weigh.func "polysemy" Poly.countDownExcBench wruns
69− , Weigh.func "freer-simple" Freer.countDownExcBench wruns
70− , Weigh.func "extensible-effects" ExtEff.countDownExcBench wruns
71− , Weigh.func "shallow" Shallow.countDownExcBench wruns
72− ]
61+ Weigh.wgroup "Countdown" $
62+ sequence_
63+ [ Weigh.func "fused-effects" Fused.countDownBench wruns,
64+ Weigh.func "mtl" MTL.countDownBench wruns,
65+ Weigh.func "polysemy" Poly.countDownBench wruns,
66+ Weigh.func "freer-simple" Freer.countDownBench wruns,
67+ Weigh.func "extensible-effects" ExtEff.countDownBench wruns,
68+ Weigh.func "shallow" Shallow.countDownBench wruns
69+ ]
70+ Weigh.wgroup "Countdown + exc" $
71+ sequence_
72+ [ Weigh.func "fused-effects" Fused.countDownExcBench wruns,
73+ Weigh.func "mtl" MTL.countDownExcBench wruns,
74+ Weigh.func "polysemy" Poly.countDownExcBench wruns,
75+ Weigh.func "freer-simple" Freer.countDownExcBench wruns,
76+ Weigh.func "extensible-effects" ExtEff.countDownExcBench wruns,
77+ Weigh.func "shallow" Shallow.countDownExcBench wruns
78+ ]