on master help sign in
Merge LinearRate.hs into Prelude.hs

* LinearRate.hs -> lib/Streamly/Benchmark/Prelude.hs * Modify LinearRate.hs accordingly

commit879d5d5aa5e5ea0a6b113acafcb594bf4006b2c7 authoradithyaov <adithya@composewell.com> dateThu 27 Feb 2020, 05:42 (7 years ago) parent7f5c73f
2 files changed+62−56
benchmark/LinearRate.hs+11−56 benchmark/lib/Streamly/Benchmark/Prelude.hs+51
benchmark/LinearRate.hs+11−56
@@ -5,64 +5,19 @@
55-- License : BSD3
66-- Maintainer : streamly@composewell.com
77
8−-- Rate benchmarks are kept separate because they need more running time to
9−-- provide stable results.
8+import Streamly.Benchmark.Common
9+import Streamly.Benchmark.Prelude
1010
11−-- import Data.Functor.Identity (Identity, runIdentity)
12−import System.Random (randomRIO)
13−
14−import Streamly.Benchmark.Common (parseCLIOpts)
15−
16−import Streamly
1711import Gauge
1812
19−import qualified Streamly.Benchmark.Prelude as Ops
20−
21−-- | Takes a source, and uses it with a default drain/fold method.
22−{-# INLINE benchSrcIO #-}
23−benchSrcIO
24− :: (t IO Int -> SerialT IO Int)
25− -> String
26− -> (Int -> t IO Int)
27− -> Benchmark
28−benchSrcIO t name f
29− = bench name $ nfIO $ randomRIO (1,1) >>= Ops.toNull t . f
30−
31−{-
32−_benchId :: NFData b => String -> (Ops.Stream m Int -> Identity b) -> Benchmark
33−_benchId name f = bench name $ nf (runIdentity . f) (Ops.source 10)
34−-}
35−
36−defaultStreamSize :: Int
37−defaultStreamSize = 100000
38−
3913main :: IO ()
4014main = do
41− -- XXX Fix indentation
42− (value, cfg, benches) <- parseCLIOpts defaultStreamSize
43− value `seq` runMode (mode cfg) cfg benches
44− -- XXX arbitrarily large rate should be the same as rate Nothing
45− [ bgroup "avgrate"
46− [ bgroup "asyncly"
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)
61− ]
62− , bgroup "aheadly"
63− [
64− benchSrcIO aheadly "unfoldrM/1,000,000"
65− (avgRate 1000000 . Ops.sourceUnfoldrM value)
66− ]
67− ]
68− ]
15+ (value, cfg, benches) <- parseCLIOpts defaultStreamSize
16+ value `seq`
17+ runMode
18+ (mode cfg)
19+ cfg
20+ benches
21+ -- XXX arbitrarily large rate should be the same as rate Nothing
22+ (concat
23+ [o_1_space_async_avgRate value, o_1_space_ahead_avgRate value])
benchmark/lib/Streamly/Benchmark/Prelude.hs+51
@@ -2587,3 +2587,54 @@ o_n_space_parallel_outerProductStreams value =
25872587 ]
25882588 ]
25892589 ]
2590+
2591+o_1_space_async_avgRate :: Int -> [Benchmark]
2592+o_1_space_async_avgRate value =
2593+ [ bgroup
2594+ "asyncly"
2595+ [ bgroup
2596+ "avgRate"
2597+ -- benchIO "unfoldr" $ toNull asyncly
2598+ -- benchSrcIO asyncly "unfoldrM" (sourceUnfoldrM value)
2599+ [ benchSrcIO
2600+ asyncly
2601+ "unfoldrM/Nothing"
2602+ (S.rate Nothing . sourceUnfoldrM value)
2603+ , benchSrcIO
2604+ asyncly
2605+ "unfoldrM/1,000,000"
2606+ (S.avgRate 1000000 . sourceUnfoldrM value)
2607+ , benchSrcIO
2608+ asyncly
2609+ "unfoldrM/3,000,000"
2610+ (S.avgRate 3000000 . sourceUnfoldrM value)
2611+ , benchSrcIO
2612+ asyncly
2613+ "unfoldrM/10,000,000/maxThreads1"
2614+ (maxThreads 1 .
2615+ S.avgRate 10000000 . sourceUnfoldrM value)
2616+ , benchSrcIO
2617+ asyncly
2618+ "unfoldrM/10,000,000"
2619+ (S.avgRate 10000000 . sourceUnfoldrM value)
2620+ , benchSrcIO
2621+ asyncly
2622+ "unfoldrM/20,000,000"
2623+ (S.avgRate 20000000 . sourceUnfoldrM value)
2624+ ]
2625+ ]
2626+ ]
2627+
2628+o_1_space_ahead_avgRate :: Int -> [Benchmark]
2629+o_1_space_ahead_avgRate value =
2630+ [ bgroup
2631+ "aheadly"
2632+ [ bgroup
2633+ "avgRate"
2634+ [ benchSrcIO
2635+ aheadly
2636+ "unfoldrM/1,000,000"
2637+ (S.avgRate 1000000 . sourceUnfoldrM value)
2638+ ]
2639+ ]
2640+ ]