git.iko.soy/effects-benchmarks
on master help sign in
90 lines 3.9 kB history raw
1{-# LANGUAGE CPP #-}
2{-# LANGUAGE FlexibleContexts #-}
3{-# LANGUAGE GADTs #-}
5module Main where
7import qualified Effectful.Dynamic.Bench as EffectfulDynamic
8import qualified Effectful.Static.Bench as EffectfulStatic
9import qualified ExtEff.Bench as ExtEff
10import qualified Freer.Bench as Freer
11import qualified Fused.Bench as Fused
12import Gauge (bench, bgroup, nf, nfAppIO)
13import Gauge.Main (defaultMain)
14import qualified MTL.Bench as MTL
15import qualified Poly.Bench as Poly
16import qualified Shallow.Bench as Shallow
17import qualified Weigh
19wruns :: Int
20wruns = 1
22runs :: Int
23runs = 100000
25main :: IO ()
26main = do
27 putStrLn "*** Time benchmarks ***"
28 defaultMain
29 [ bgroup
30 "Countdown"
31 [ bgroup
32 "Put"
33 [ bench "fused-effects" (nf Fused.countDownBench runs),
34 bench "mtl" (nf MTL.countDownBench runs),
35 bench "polysemy" (nf Poly.countDownBench runs),
36 bench "freer-simple" (nf Freer.countDownBench runs),
37 bench "extensible-effects" (nf ExtEff.countDownBench runs),
38 bench "shallow" (nf Shallow.countDownBench runs),
39 bench "effectful - static" (nf EffectfulStatic.countDownBench runs),
40 bench "effectful - dynamic" (nf EffectfulDynamic.countDownBench runs)
41 ],
42 bgroup
43 "Put+Exc"
44 [ bench "fused-effects" (nf Fused.countDownExcBench runs),
45 bench "mtl" (nf MTL.countDownExcBench runs),
46 bench "polysemy" (nf Poly.countDownExcBench runs),
47 bench "freer-simple" (nf Freer.countDownExcBench runs),
48 bench "extensible-effects" (nf ExtEff.countDownExcBench runs),
49 bench "shallow" (nf Shallow.countDownExcBench runs),
50 bench "effectful - static" (nf EffectfulStatic.countDownExcBench runs),
51 bench "effectful - dynamic" (nf EffectfulDynamic.countDownExcBench runs)
52 ]
53 ],
54 bgroup
55 "HTTP"
56 [ bench "fused-effects" (nfAppIO Fused.httpBench runs),
57 bench "polysemy" (nfAppIO Poly.httpBench runs),
58 bench "extensible-effects" (nfAppIO ExtEff.httpBench runs),
59 bench "Deep embedding" (nfAppIO MTL.httpBench runs),
60 bench "Shallow embedding" (nfAppIO Shallow.httpBench runs),
61 bench "freer-simple" (nfAppIO Freer.httpBench runs),
62 bench "effectful - static" (nfAppIO EffectfulStatic.httpBench runs),
63 bench "effectful - dynamic" (nfAppIO EffectfulDynamic.httpBench runs)
64 ]
65 ]
67 putStrLn "*** Space benchmarks (these will take some time to run) ***"
68 Weigh.mainWith $ do
69 Weigh.wgroup "Countdown" $
70 sequence_
71 [ Weigh.func "fused-effects" Fused.countDownBench wruns,
72 Weigh.func "mtl" MTL.countDownBench wruns,
73 Weigh.func "polysemy" Poly.countDownBench wruns,
74 Weigh.func "freer-simple" Freer.countDownBench wruns,
75 Weigh.func "extensible-effects" ExtEff.countDownBench wruns,
76 Weigh.func "shallow" Shallow.countDownBench wruns,
77 Weigh.func "effectful - static" EffectfulStatic.countDownBench runs,
78 Weigh.func "effectful - dynamic" EffectfulDynamic.countDownBench runs
79 ]
80 Weigh.wgroup "Countdown + exc" $
81 sequence_
82 [ Weigh.func "fused-effects" Fused.countDownExcBench wruns,
83 Weigh.func "mtl" MTL.countDownExcBench wruns,
84 Weigh.func "polysemy" Poly.countDownExcBench wruns,
85 Weigh.func "freer-simple" Freer.countDownExcBench wruns,
86 Weigh.func "extensible-effects" ExtEff.countDownExcBench wruns,
87 Weigh.func "shallow" Shallow.countDownExcBench wruns,
88 Weigh.func "effectful - static" EffectfulStatic.countDownExcBench runs,
89 Weigh.func "effectful - dynamic" EffectfulDynamic.countDownExcBench runs
90 ]