on master help sign in
Add benchmarks for minRate, maxRate & constRate (bench:Prelude.Rate)
commitc5b4838d10e43aa87809e0f09f06009ddc9833c5 authoradithyaov <adithya@composewell.com> dateThu 12 Nov 2020, 10:28 (6 years ago) parentaf872ae
1 file changed+39−9
benchmark/Streamly/Benchmark/Prelude/Rate.hs+39−9
benchmark/Streamly/Benchmark/Prelude/Rate.hs+39−9
@@ -35,9 +35,21 @@ avgRateThreads1 :: (MonadAsync m, IsStream t) => Int -> Double -> Int -> t m Int
3535avgRateThreads1 value rate_ =
3636 maxThreads 1 . S.avgRate rate_ . sourceUnfoldrM value
3737
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+
3850-- XXX arbitrarily large rate should be the same as rate Nothing
39−o_1_space_async_avgRate :: Int -> [Benchmark]
40−o_1_space_async_avgRate value =
51+o_1_space_async :: Int -> [Benchmark]
52+o_1_space_async value =
4153 [ bgroup
4254 "asyncly"
4355 [ bgroup
@@ -52,14 +64,35 @@ o_1_space_async_avgRate value =
5264 , benchIOSrc asyncly "10M" $ avgRate value 10000000
5365 , benchIOSrc asyncly "20M" $ avgRate value 20000000
5466 ]
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+ ]
5584 ]
5685 ]
5786
58−o_1_space_ahead_avgRate :: Int -> [Benchmark]
59−o_1_space_ahead_avgRate value =
87+o_1_space_ahead :: Int -> [Benchmark]
88+o_1_space_ahead value =
6089 [ bgroup
6190 "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+ ]
6396 ]
6497
6598-------------------------------------------------------------------------------
@@ -75,8 +108,5 @@ main = do
75108
76109 allBenchmarks value =
77110 [ bgroup (o_1_space_prefix moduleName)
78− $ concat
79− [ o_1_space_async_avgRate value
80− , o_1_space_ahead_avgRate value
81− ]
111+ $ concat [o_1_space_async value, o_1_space_ahead value]
82112 ]