@@ -1,72 +1,78 @@
1−{-# LANGUAGE FlexibleContexts, GADTs, CPP #-}
2+{-# LANGUAGE FlexibleContexts #-}
3module Main where
5module Main where
7+import qualified ExtEff.Bench as ExtEff
8+import qualified Freer.Bench as Freer
9+import qualified Fused.Bench as Fused
5import Gauge (bench, bgroup, nf, nfAppIO)
10import Gauge (bench, bgroup, nf, nfAppIO)
6import Gauge.Main (defaultMain)
11import Gauge.Main (defaultMain)
9−import qualified Fused.Bench as Fused
10−import qualified Freer.Bench as Freer
11−import qualified Shallow.Bench as Shallow
12import qualified MTL.Bench as MTL
12import qualified MTL.Bench as MTL
13import qualified Poly.Bench as Poly
13import qualified Poly.Bench as Poly
14−import qualified ExtEff.Bench as ExtEff
14+import qualified Shallow.Bench as Shallow
15+import qualified Weigh
16wruns :: Int
17wruns :: Int
19runs :: Int
20runs :: Int
20−runs = 10000
21+runs = 100000
22main :: IO ()
23main :: IO ()
24 putStrLn "*** Time benchmarks ***"
25 putStrLn "*** Time benchmarks ***"
25 defaultMain
26 defaultMain
27− bgroup "Countdown"
28+ "Countdown"
28− [ bgroup "Put"
29+ [ bgroup
29− [ bench "fused-effects" (nf Fused.countDownBench runs)
31+ [ bench "fused-effects" (nf Fused.countDownBench runs),
30− , bench "mtl" (nf MTL.countDownBench runs)
32+ bench "mtl" (nf MTL.countDownBench runs),
31− , bench "polysemy" (nf Poly.countDownBench runs)
33+ bench "polysemy" (nf Poly.countDownBench runs),
32− , bench "freer-simple" (nf Freer.countDownBench runs)
34+ bench "freer-simple" (nf Freer.countDownBench runs),
33− , bench "extensible-effects" (nf ExtEff.countDownBench runs)
35+ bench "extensible-effects" (nf ExtEff.countDownBench runs),
34− , bench "shallow" (nf Shallow.countDownBench runs)
36+ bench "shallow" (nf Shallow.countDownBench runs)
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)
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)
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)
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)
55 putStrLn "*** Space benchmarks (these will take some time to run) ***"
59 putStrLn "*** Space benchmarks (these will take some time to run) ***"
56 Weigh.mainWith $ do
60 Weigh.mainWith $ do
57− Weigh.wgroup "Countdown" $ sequence_
61+ Weigh.wgroup "Countdown" $
58− [ Weigh.func "fused-effects" Fused.countDownBench wruns
63+ [ Weigh.func "fused-effects" Fused.countDownBench wruns,
59− , Weigh.func "mtl" MTL.countDownBench wruns
64+ Weigh.func "mtl" MTL.countDownBench wruns,
60− , Weigh.func "polysemy" Poly.countDownBench wruns
65+ Weigh.func "polysemy" Poly.countDownBench wruns,
61− , Weigh.func "freer-simple" Freer.countDownBench wruns
66+ Weigh.func "freer-simple" Freer.countDownBench wruns,
62− , Weigh.func "extensible-effects" ExtEff.countDownBench wruns
67+ Weigh.func "extensible-effects" ExtEff.countDownBench wruns,
63− , Weigh.func "shallow" Shallow.countDownBench wruns
68+ Weigh.func "shallow" Shallow.countDownBench wruns
65− Weigh.wgroup "Countdown + exc" $ sequence_
70+ Weigh.wgroup "Countdown + exc" $
66− [ Weigh.func "fused-effects" Fused.countDownExcBench wruns
72+ [ Weigh.func "fused-effects" Fused.countDownExcBench wruns,
67− , Weigh.func "mtl" MTL.countDownExcBench wruns
73+ Weigh.func "mtl" MTL.countDownExcBench wruns,
68− , Weigh.func "polysemy" Poly.countDownExcBench wruns
74+ Weigh.func "polysemy" Poly.countDownExcBench wruns,
69− , Weigh.func "freer-simple" Freer.countDownExcBench wruns
75+ Weigh.func "freer-simple" Freer.countDownExcBench wruns,
70− , Weigh.func "extensible-effects" ExtEff.countDownExcBench wruns
76+ Weigh.func "extensible-effects" ExtEff.countDownExcBench wruns,
71− , Weigh.func "shallow" Shallow.countDownExcBench wruns
77+ Weigh.func "shallow" Shallow.countDownExcBench wruns