on master help sign in
Add benchmarks for minRate, maxRate & constRate (bench:Prelude.Rate)
c5b4838adithyaov
benchmark/Streamly/Benchmark/Prelude/Rate.hs+39−9
@@ -35,9 +35,21 @@ avgRateThreads1 :: (MonadAsync m, IsStream t) => Int -> Double -> Int -> t m Int
35avgRateThreads1 value rate_ =
35avgRateThreads1 value rate_ =
36 maxThreads 1 . S.avgRate rate_ . sourceUnfoldrM value
36 maxThreads 1 . S.avgRate rate_ . sourceUnfoldrM value
37
37
38+{-# INLINE minRate #-}
39+minRate :: (MonadAsync m, IsStream t) => Int -> Double -> Int -> t m Int
40+minRate value rate_ = S.minRate rate_ . sourceUnfoldrM value
41+
42+{-# INLINE maxRate #-}
43+maxRate :: (MonadAsync m, IsStream t) => Int -> Double -> Int -> t m Int
44+maxRate value rate_ = S.minRate rate_ . sourceUnfoldrM value
45+
46+{-# INLINE constRate #-}
47+constRate :: (MonadAsync m, IsStream t) => Int -> Double -> Int -> t m Int
48+constRate value rate_ = S.constRate rate_ . sourceUnfoldrM value
49+
38-- XXX arbitrarily large rate should be the same as rate Nothing
50-- XXX arbitrarily large rate should be the same as rate Nothing
39−o_1_space_async_avgRate :: Int -> [Benchmark]
51+o_1_space_async :: Int -> [Benchmark]
40−o_1_space_async_avgRate value =
52+o_1_space_async value =
41 [ bgroup
53 [ bgroup
42 "asyncly"
54 "asyncly"
43 [ bgroup
55 [ bgroup
@@ -52,14 +64,35 @@ o_1_space_async_avgRate value =
52 , benchIOSrc asyncly "10M" $ avgRate value 10000000
64 , benchIOSrc asyncly "10M" $ avgRate value 10000000
53 , benchIOSrc asyncly "20M" $ avgRate value 20000000
65 , benchIOSrc asyncly "20M" $ avgRate value 20000000
54 ]
66 ]
67+ , bgroup
68+ "minRate"
69+ [ benchIOSrc asyncly "1M" $ minRate value 1000000
70+ , benchIOSrc asyncly "10M" $ minRate value 10000000
71+ , benchIOSrc asyncly "20M" $ minRate value 20000000
72+ ]
73+ , bgroup
74+ "maxRate"
75+ [ -- benchIOSrc asyncly "10K" $ maxRate value 10000
76+ benchIOSrc asyncly "10M" $ maxRate value 10000000
77+ ]
78+ , bgroup
79+ "constRate"
80+ [ -- benchIOSrc asyncly "10K" $ constRate value 10000
81+ benchIOSrc asyncly "1M" $ constRate value 1000000
82+ , benchIOSrc asyncly "10M" $ constRate value 10000000
83+ ]
55 ]
84 ]
56 ]
85 ]
57
86
58−o_1_space_ahead_avgRate :: Int -> [Benchmark]
87+o_1_space_ahead :: Int -> [Benchmark]
59−o_1_space_ahead_avgRate value =
88+o_1_space_ahead value =
60 [ bgroup
89 [ bgroup
61 "aheadly"
90 "aheadly"
62− [bgroup "avgRate" [benchIOSrc aheadly "1M" $ avgRate value 1000000]]
91+ [ benchIOSrc aheadly "avgRate/1M" $ avgRate value 1000000
92+ , benchIOSrc aheadly "minRate/1M" $ minRate value 1000000
93+ , benchIOSrc aheadly "maxRate/1M" $ maxRate value 1000000
94+ , benchIOSrc asyncly "constRate/1M" $ constRate value 1000000
95+ ]
63 ]
96 ]
64
97
65-------------------------------------------------------------------------------
98-------------------------------------------------------------------------------
@@ -75,8 +108,5 @@ main = do
75
108
76 allBenchmarks value =
109 allBenchmarks value =
77 [ bgroup (o_1_space_prefix moduleName)
110 [ bgroup (o_1_space_prefix moduleName)
78− $ concat
111+ $ concat [o_1_space_async value, o_1_space_ahead value]
79− [ o_1_space_async_avgRate value
80− , o_1_space_ahead_avgRate value
81− ]
82 ]
112 ]