on master help sign in
Add benchmark for sepBy1 (#2237)
75a174fRanjeet Ranjan
benchmark/Streamly/Benchmark/Data/Parser.hs+7
@@ -194,6 +194,12 @@ sepByWords _ = Stream.parse (wrds even Fold.drain)
194 where
194 where
195 wrds p = PR.sepBy (PR.takeWhile (not . p) Fold.drain) (PR.dropWhile p)
195 wrds p = PR.sepBy (PR.takeWhile (not . p) Fold.drain) (PR.dropWhile p)
196
196
197+{-# INLINE sepByWords1 #-}
198+sepByWords1 :: Monad m => Int -> Stream m Int -> m (Either ParseError ())
199+sepByWords1 _ = Stream.parse (wrds even Fold.drain)
200+ where
201+ wrds p = PR.sepBy1 (PR.takeWhile (not . p) Fold.drain) (PR.dropWhile p)
202+
197{-# INLINE deintercalate #-}
203{-# INLINE deintercalate #-}
198deintercalate :: Monad m => Int -> Stream m Int -> m (Either ParseError ())
204deintercalate :: Monad m => Int -> Stream m Int -> m (Either ParseError ())
199deintercalate _ = Stream.parse (partition even)
205deintercalate _ = Stream.parse (partition even)
@@ -467,6 +473,7 @@ o_1_space_serial value =
467 , benchIOSink value "groupByRolling" $ groupByRolling
473 , benchIOSink value "groupByRolling" $ groupByRolling
468 , benchIOSink value "wordBy" $ wordBy value
474 , benchIOSink value "wordBy" $ wordBy value
469 , benchIOSink value "sepBy (words)" $ sepByWords value
475 , benchIOSink value "sepBy (words)" $ sepByWords value
476+ , benchIOSink value "sepBy1 (words)" $ sepByWords1 value
470 , benchIOSink value "deintercalate" $ deintercalate value
477 , benchIOSink value "deintercalate" $ deintercalate value
471 , benchIOSink value "splitAp" $ splitAp value
478 , benchIOSink value "splitAp" $ splitAp value
472 , benchIOSink value "splitApBefore" $ splitApBefore value
479 , benchIOSink value "splitApBefore" $ splitApBefore value