on master help sign in
Add benchmarks for mkAsync
d09f1adadithyaov
benchmark/Streamly/Benchmark/Prelude/Async.hs+9
@@ -63,6 +63,14 @@ o_1_space_mapping value =
63 ]
63 ]
64 ]
64 ]
65
65
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+
66-------------------------------------------------------------------------------
74-------------------------------------------------------------------------------
67-- Joining
75-- Joining
68-------------------------------------------------------------------------------
76-------------------------------------------------------------------------------
@@ -190,5 +198,6 @@ main = do
190 , o_1_space_outerProduct value
198 , o_1_space_outerProduct value
191 , o_1_space_joining value
199 , o_1_space_joining value
192 ]
200 ]
201+ , bgroup (o_n_heap_prefix moduleName) (o_n_heap_buffering value)
193 , bgroup (o_n_space_prefix moduleName) (o_n_space_outerProduct value)
202 , bgroup (o_n_space_prefix moduleName) (o_n_space_outerProduct value)
194 ]
203 ]
benchmark/Streamly/Benchmark/Prelude/Serial.hs+6−4
@@ -1405,7 +1405,7 @@ o_1_space_indexingX4 value =
1405 ]
1405 ]
1406
1406
1407-------------------------------------------------------------------------------
1407-------------------------------------------------------------------------------
1408−-- Reordering
1408+-- Size conserving transformations (reordering, buffering, etc.)
1409-------------------------------------------------------------------------------
1409-------------------------------------------------------------------------------
1410
1410
1411{-# INLINE reverse #-}
1411{-# INLINE reverse #-}
@@ -1416,13 +1416,15 @@ reverse n = composeN n S.reverse
1416reverse' :: MonadIO m => Int -> SerialT m Int -> m ()
1416reverse' :: MonadIO m => Int -> SerialT m Int -> m ()
1417reverse' n = composeN n Internal.reverse'
1417reverse' n = composeN n Internal.reverse'
1418
1418
1419−o_n_heap_reordering :: Int -> [Benchmark]
1419+o_n_heap_buffering :: Int -> [Benchmark]
1420−o_n_heap_reordering value =
1420+o_n_heap_buffering value =
1421 [ bgroup "buffered"
1421 [ bgroup "buffered"
1422 [
1422 [
1423 -- Reversing/sorting a stream
1423 -- Reversing/sorting a stream
1424 benchIOSink value "reverse" (reverse 1)
1424 benchIOSink value "reverse" (reverse 1)
1425 , benchIOSink value "reverse'" (reverse' 1)
1425 , benchIOSink value "reverse'" (reverse' 1)
1426+
1427+ , benchIOSink value "mkAsync" (mkAsync serially)
1426 ]
1428 ]
1427 ]
1429 ]
1428
1430
@@ -2130,7 +2132,7 @@ main = do
2130 , o_n_heap_elimination_buffered size
2132 , o_n_heap_elimination_buffered size
2131
2133
2132 -- transformation
2134 -- transformation
2133− , o_n_heap_reordering size
2135+ , o_n_heap_buffering size
2134 , o_n_heap_transformer size
2136 , o_n_heap_transformer size
2135 ]
2137 ]
2136 , bgroup (o_n_space_prefix moduleName) $ Prelude.concat
2138 , 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))
129 => Int -> Int -> t m AbsTime
129 => Int -> Int -> t m AbsTime
130absTimes value _ = S.take value Internal.absTimes
130absTimes value _ = S.take value Internal.absTimes
131
131
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+
132-------------------------------------------------------------------------------
140-------------------------------------------------------------------------------
133-- Elimination
141-- Elimination
134-------------------------------------------------------------------------------
142-------------------------------------------------------------------------------