@@ -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
38+{-# INLINE minRate #-}
39+minRate :: (MonadAsync m, IsStream t) => Int -> Double -> Int -> t m Int
40+minRate value rate_ = S.minRate rate_ . sourceUnfoldrM value
42+{-# INLINE maxRate #-}
43+maxRate :: (MonadAsync m, IsStream t) => Int -> Double -> Int -> t m Int
44+maxRate value rate_ = S.minRate rate_ . sourceUnfoldrM value
46+{-# INLINE constRate #-}
47+constRate :: (MonadAsync m, IsStream t) => Int -> Double -> Int -> t m Int
48+constRate value rate_ = S.constRate rate_ . sourceUnfoldrM value
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 =
@@ -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
69+ [ benchIOSrc asyncly "1M" $ minRate value 1000000
70+ , benchIOSrc asyncly "10M" $ minRate value 10000000
71+ , benchIOSrc asyncly "20M" $ minRate value 20000000
75+ [ -- benchIOSrc asyncly "10K" $ maxRate value 10000
76+ benchIOSrc asyncly "10M" $ maxRate value 10000000
80+ [ -- benchIOSrc asyncly "10K" $ constRate value 10000
81+ benchIOSrc asyncly "1M" $ constRate value 1000000
82+ , benchIOSrc asyncly "10M" $ constRate value 10000000
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 =
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
65-------------------------------------------------------------------------------
98-------------------------------------------------------------------------------
@@ -75,8 +108,5 @@ main = do
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