on master help sign in
Add consumeIterateM benchmark
commit5342b1629ff9776be1e0bcf592c8c8c46ac888c3 authorHarendra Kumar <harendra@composewell.com> dateSat 9 Oct 2021, 19:45 (5 years ago) parent6006084
1 file changed+11
benchmark/Streamly/Benchmark/Prelude/Serial/NestedFold.hs+11
benchmark/Streamly/Benchmark/Prelude/Serial/NestedFold.hs+11
@@ -20,6 +20,7 @@ import Control.Monad.IO.Class (MonadIO(..))
2020import Data.Monoid (Sum(..))
2121import GHC.Generics (Generic)
2222
23+import qualified Streamly.Internal.Data.Consumer.Type as Consumer
2324import qualified Streamly.Internal.Data.Fold as FL
2425import qualified Streamly.Internal.Data.Stream.IsStream as Internal
2526import qualified Streamly.Prelude as S
@@ -149,6 +150,15 @@ foldIterateM =
149150 (return . FL.take 2 . FL.sconcat) (return (Sum 0))
150151 . S.map Sum
151152
153+{-# INLINE consumeIterateM #-}
154+consumeIterateM :: Monad m => SerialT m Int -> m ()
155+consumeIterateM =
156+ S.drain
157+ . S.map getSum
158+ . Internal.consumeIterateM
159+ (Consumer.take 2 Consumer.sconcat) (return (Sum 0))
160+ . S.map Sum
161+
152162o_1_space_grouping :: Int -> [Benchmark]
153163o_1_space_grouping value =
154164 -- Buffering operations using heap proportional to group/window sizes.
@@ -160,6 +170,7 @@ o_1_space_grouping value =
160170 , benchIOSink value "groupsByRollingEq" groupsByRollingEq
161171 , benchIOSink value "foldMany" foldMany
162172 , benchIOSink value "foldIterateM" foldIterateM
173+ , benchIOSink value "consumeIterateM" consumeIterateM
163174 ]
164175 ]
165176