on master help sign in
Add benchmarks for parallel application and fold
commit107f52718fad10ba22519ece232dc71cc479297b authorHarendra Kumar <harendra.kumar@gmail.com> dateThu 21 Nov 2019, 01:27 (7 years ago) parent90da325
2 files changed+15
benchmark/LinearAsync.hs+3 src/Streamly/Internal/Benchmark/Prelude.hs+12
benchmark/LinearAsync.hs+3
@@ -101,5 +101,8 @@ main =
101101 , benchIO "zip" Ops.zipAsync
102102 , benchIO "zipM" Ops.zipAsyncM
103103 , benchIO "zipAp" Ops.zipAsyncAp
104+ -- Parallel stages in a pipeline
105+ , benchIO "parAppMap" Ops.parAppMap
106+ , benchIO "parAppSum" Ops.parAppSum
104107 ]
105108 ]
src/Streamly/Internal/Benchmark/Prelude.hs+12
@@ -809,6 +809,18 @@ inspect $ hasNoTypeClasses 'concatUnfoldRoundrobinRepl4xN
809809-- inspect $ 'concatUnfoldRoundrobinRepl4xN `hasNoType` ''D.ConcatUnfoldInterleaveState
810810#endif
811811
812+-------------------------------------------------------------------------------
813+-- Parallel application/fold
814+-------------------------------------------------------------------------------
815+
816+{-# INLINE parAppMap #-}
817+parAppMap :: S.MonadAsync m => Stream m Int -> m ()
818+parAppMap src = S.drain $ S.map (+1) S.|$ src
819+
820+{-# INLINE parAppSum #-}
821+parAppSum :: S.MonadAsync m => Stream m Int -> m ()
822+parAppSum src = (S.sum S.|$. src) >>= \x -> P.seq x (return ())
823+
812824-------------------------------------------------------------------------------
813825-- Mixed Composition
814826-------------------------------------------------------------------------------