@@ -421,6 +421,11 @@ parseBreak s = do
421concatSequence :: MonadThrow m => Stream m Int -> m ()
421concatSequence :: MonadThrow m => Stream m Int -> m ()
422concatSequence = Stream.parse $ PR.concatSequence Fold.drain $ Stream.repeat PR.one
422concatSequence = Stream.parse $ PR.concatSequence Fold.drain $ Stream.repeat PR.one
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)
424-------------------------------------------------------------------------------
429-------------------------------------------------------------------------------
425-- Benchmarks
430-- Benchmarks
426-------------------------------------------------------------------------------
431-------------------------------------------------------------------------------
@@ -466,6 +471,8 @@ o_1_space_serial value =
466 , benchIOSink value "parseIterate (take 1)" (parseIterate 1)
471 , benchIOSink value "parseIterate (take 1)" (parseIterate 1)
467 , benchIOSink value "parseIterate (take all)" (parseIterate value)
472 , benchIOSink value "parseIterate (take all)" (parseIterate value)
468 , benchIOSink value "concatSequence" concatSequence
473 , benchIOSink value "concatSequence" concatSequence
474+ , benchIOSink value "parseMany (groupBy (<))" (parseManyGroupBy (<))
475+ , benchIOSink value "parseMany (groupBy (==))" (parseManyGroupBy (==))
471o_1_space_filesystem :: BenchEnv -> [Benchmark]
478o_1_space_filesystem :: BenchEnv -> [Benchmark]