@@ -421,6 +421,11 @@ parseBreak s = do
421421concatSequence :: MonadThrow m => Stream m Int -> m ()
422422concatSequence = Stream.parse $ PR.concatSequence Fold.drain $ Stream.repeat PR.one
423423
424+{-# INLINE parseManyGroupBy #-}
425+parseManyGroupBy :: MonadThrow m => (Int -> Int -> Bool) -> Stream m Int -> m ()
426+parseManyGroupBy cmp =
427+ Stream.fold Fold.drain . Stream.parseMany (PR.groupBy cmp Fold.drain)
428+
424429-------------------------------------------------------------------------------
425430-- Benchmarks
426431-------------------------------------------------------------------------------
@@ -466,6 +471,8 @@ o_1_space_serial value =
466471 , benchIOSink value "parseIterate (take 1)" (parseIterate 1)
467472 , benchIOSink value "parseIterate (take all)" (parseIterate value)
468473 , benchIOSink value "concatSequence" concatSequence
474+ , benchIOSink value "parseMany (groupBy (<))" (parseManyGroupBy (<))
475+ , benchIOSink value "parseMany (groupBy (==))" (parseManyGroupBy (==))
469476 ]
470477
471478o_1_space_filesystem :: BenchEnv -> [Benchmark]