on bac26fc help sign in
streamly/benchmark/Nested.hs
81 lines 3.5 kB history raw
1-- |
2-- Module : Main
3-- Copyright : (c) 2018 Harendra Kumar
4--
5-- License : BSD3
6-- Maintainer : harendra.kumar@gmail.com
8import Control.DeepSeq (NFData)
9import Data.Functor.Identity (Identity, runIdentity)
10import System.Random (randomRIO)
11import qualified NestedOps as Ops
12import Streamly
13import Gauge
15benchIO :: (NFData b) => String -> (Int -> IO b) -> Benchmark
16benchIO name f = bench name $ nfIO $ randomRIO (1,1) >>= f
18_benchId :: (NFData b) => String -> (Int -> Identity b) -> Benchmark
19_benchId name f = bench name $ nf (\g -> runIdentity (g 1)) f
21main :: IO ()
22main = do
23 -- TBD Study scaling with 10, 100, 1000 loop iterations
24 defaultMain
25 [ bgroup "linear"
26 [ benchIO "toNullLinear" Ops.toNullLinear
27 , benchIO "toListLinear" Ops.toListLinear
28 ]
30 , bgroup "asStream"
31 [ benchIO "append" $ Ops.append asStream
32 , benchIO "toNull0" $ Ops.toNull0 asStream
33 , benchIO "toList0" $ Ops.toList0 asStream
34 , benchIO "toNull" $ Ops.toNull asStream
35 , benchIO "toList" $ Ops.toList asStream
36 , benchIO "toListSome" $ Ops.toListSome asStream
37 , benchIO "filterAllOut" $ Ops.filterAllOut asStream
38 , benchIO "filterAllIn" $ Ops.filterAllIn asStream
39 , benchIO "filterSome" $ Ops.filterSome asStream
40 , benchIO "breakAfterSome" $ Ops.breakAfterSome asStream
41 ]
43 , bgroup "asCostream"
44 [ benchIO "append" $ Ops.append asCostream
45 , benchIO "toNull0" $ Ops.toNull0 asCostream
46 , benchIO "toList0" $ Ops.toList0 asCostream
47 , benchIO "toNull" $ Ops.toNull asCostream
48 , benchIO "toList" $ Ops.toList asCostream
49 , benchIO "toListSome" $ Ops.toListSome asCostream
50 , benchIO "filterAllOut" $ Ops.filterAllOut asCostream
51 , benchIO "filterAllIn" $ Ops.filterAllIn asCostream
52 , benchIO "filterSome" $ Ops.filterSome asCostream
53 , benchIO "breakAfterSome" $ Ops.breakAfterSome asCostream
54 ]
56 , bgroup "CoasCoparAhead"
57 [ benchIO "append" $ Ops.append asParAhead
58 , benchIO "toNull0" $ Ops.toNull0 asParAhead
59 , benchIO "toList0" $ Ops.toList0 asParAhead
60 , benchIO "toNull" $ Ops.toNull asParAhead
61 , benchIO "toList" $ Ops.toList asParAhead
62 , benchIO "toListSome" $ Ops.toListSome asParAhead
63 , benchIO "filterAllOut" $ Ops.filterAllOut asParAhead
64 , benchIO "filterAllIn" $ Ops.filterAllIn asParAhead
65 , benchIO "filterSome" $ Ops.filterSome asParAhead
66 , benchIO "breakAfterSome" $ Ops.breakAfterSome asParAhead
67 ]
69 , bgroup "Parallely"
70 [ benchIO "append" $ Ops.append asCoparAhead
71 , benchIO "toNull0" $ Ops.toNull0 asCoparAhead
72 , benchIO "toList0" $ Ops.toList0 asCoparAhead
73 , benchIO "toNull" $ Ops.toNull asCoparAhead
74 , benchIO "toList" $ Ops.toList asCoparAhead
75 , benchIO "toListSome" $ Ops.toListSome asCoparAhead
76 , benchIO "filterAllOut" $ Ops.filterAllOut asCoparAhead
77 , benchIO "filterAllIn" $ Ops.filterAllIn asCoparAhead
78 , benchIO "filterSome" $ Ops.filterSome asCoparAhead
79 , benchIO "breakAfterSome" $ Ops.breakAfterSome asCoparAhead
80 ]
81 ]