on master help sign in
Add benchmarks for mkAsync
commitd09f1ad9b9507666bcf774e3010d9058b90f8edc authoradithyaov <adithya@composewell.com> dateMon 23 Nov 2020, 15:33 (6 years ago) parent75b4329
3 files changed+23−4
benchmark/Streamly/Benchmark/Prelude/Async.hs+9 benchmark/Streamly/Benchmark/Prelude/Serial.hs+6−4 benchmark/lib/Streamly/Benchmark/Prelude.hs+8
benchmark/Streamly/Benchmark/Prelude/Async.hs+9
@@ -63,6 +63,14 @@ o_1_space_mapping value =
6363 ]
6464 ]
6565
66+-------------------------------------------------------------------------------
67+-- Size conserving transformations (reordering, buffering, etc.)
68+-------------------------------------------------------------------------------
69+
70+o_n_heap_buffering :: Int -> [Benchmark]
71+o_n_heap_buffering value =
72+ [bgroup "buffered" [benchIOSink value "mkAsync" (mkAsync asyncly)]]
73+
6674-------------------------------------------------------------------------------
6775-- Joining
6876-------------------------------------------------------------------------------
@@ -190,5 +198,6 @@ main = do
190198 , o_1_space_outerProduct value
191199 , o_1_space_joining value
192200 ]
201+ , bgroup (o_n_heap_prefix moduleName) (o_n_heap_buffering value)
193202 , bgroup (o_n_space_prefix moduleName) (o_n_space_outerProduct value)
194203 ]
benchmark/Streamly/Benchmark/Prelude/Serial.hs+6−4
@@ -1405,7 +1405,7 @@ o_1_space_indexingX4 value =
14051405 ]
14061406
14071407-------------------------------------------------------------------------------
1408−-- Reordering
1408+-- Size conserving transformations (reordering, buffering, etc.)
14091409-------------------------------------------------------------------------------
14101410
14111411{-# INLINE reverse #-}
@@ -1416,13 +1416,15 @@ reverse n = composeN n S.reverse
14161416reverse' :: MonadIO m => Int -> SerialT m Int -> m ()
14171417reverse' n = composeN n Internal.reverse'
14181418
1419−o_n_heap_reordering :: Int -> [Benchmark]
1420−o_n_heap_reordering value =
1419+o_n_heap_buffering :: Int -> [Benchmark]
1420+o_n_heap_buffering value =
14211421 [ bgroup "buffered"
14221422 [
14231423 -- Reversing/sorting a stream
14241424 benchIOSink value "reverse" (reverse 1)
14251425 , benchIOSink value "reverse'" (reverse' 1)
1426+
1427+ , benchIOSink value "mkAsync" (mkAsync serially)
14261428 ]
14271429 ]
14281430
@@ -2130,7 +2132,7 @@ main = do
21302132 , o_n_heap_elimination_buffered size
21312133
21322134 -- transformation
2133− , o_n_heap_reordering size
2135+ , o_n_heap_buffering size
21342136 , o_n_heap_transformer size
21352137 ]
21362138 , bgroup (o_n_space_prefix moduleName) $ Prelude.concat
benchmark/lib/Streamly/Benchmark/Prelude.hs+8
@@ -129,6 +129,14 @@ absTimes :: (S.IsStream t, S.MonadAsync m, Functor (t m))
129129 => Int -> Int -> t m AbsTime
130130absTimes value _ = S.take value Internal.absTimes
131131
132+-------------------------------------------------------------------------------
133+-- Buffering
134+-------------------------------------------------------------------------------
135+
136+{-# INLINE mkAsync #-}
137+mkAsync :: (S.MonadAsync m, S.IsStream t) => (t m a -> S.SerialT m a) -> t m a -> m ()
138+mkAsync adapter = S.drain . adapter . S.mkAsync
139+
132140-------------------------------------------------------------------------------
133141-- Elimination
134142-------------------------------------------------------------------------------