@@ -5,64 +5,19 @@
5-- License : BSD3
5-- License : BSD3
6-- Maintainer : streamly@composewell.com
6-- Maintainer : streamly@composewell.com
8−-- Rate benchmarks are kept separate because they need more running time to
8+import Streamly.Benchmark.Common
9−-- provide stable results.
9+import Streamly.Benchmark.Prelude
11−-- import Data.Functor.Identity (Identity, runIdentity)
12−import System.Random (randomRIO)
14−import Streamly.Benchmark.Common (parseCLIOpts)
17import Gauge
11import Gauge
19−import qualified Streamly.Benchmark.Prelude as Ops
21−-- | Takes a source, and uses it with a default drain/fold method.
22−{-# INLINE benchSrcIO #-}
24− :: (t IO Int -> SerialT IO Int)
29− = bench name $ nfIO $ randomRIO (1,1) >>= Ops.toNull t . f
32−_benchId :: NFData b => String -> (Ops.Stream m Int -> Identity b) -> Benchmark
33−_benchId name f = bench name $ nf (runIdentity . f) (Ops.source 10)
36−defaultStreamSize :: Int
37−defaultStreamSize = 100000
39main :: IO ()
13main :: IO ()
41− -- XXX Fix indentation
42− (value, cfg, benches) <- parseCLIOpts defaultStreamSize
15+ (value, cfg, benches) <- parseCLIOpts defaultStreamSize
43− value `seq` runMode (mode cfg) cfg benches
16+ value `seq`
44− -- XXX arbitrarily large rate should be the same as rate Nothing
21+ -- XXX arbitrarily large rate should be the same as rate Nothing
45− [ bgroup "avgrate"
22+ (concat
46− [ bgroup "asyncly"
23+ [o_1_space_async_avgRate value, o_1_space_ahead_avgRate value])
47− [ -- benchIO "unfoldr" $ Ops.toNull asyncly
48− benchSrcIO asyncly "unfoldrM" (Ops.sourceUnfoldrM value)
49− , benchSrcIO asyncly "unfoldrM/Nothing"
50− (rate Nothing . Ops.sourceUnfoldrM value)
51− , benchSrcIO asyncly "unfoldrM/1,000,000"
52− (avgRate 1000000 . Ops.sourceUnfoldrM value)
53− , benchSrcIO asyncly "unfoldrM/3,000,000"
54− (avgRate 3000000 . Ops.sourceUnfoldrM value)
55− , benchSrcIO asyncly "unfoldrM/10,000,000/maxThreads1"
56− (maxThreads 1 . avgRate 10000000 . Ops.sourceUnfoldrM value)
57− , benchSrcIO asyncly "unfoldrM/10,000,000"
58− (avgRate 10000000 . Ops.sourceUnfoldrM value)
59− , benchSrcIO asyncly "unfoldrM/20,000,000"
60− (avgRate 20000000 . Ops.sourceUnfoldrM value)
64− benchSrcIO aheadly "unfoldrM/1,000,000"
65− (avgRate 1000000 . Ops.sourceUnfoldrM value)