on master help sign in
Add takeWhileP benchmark
d15c033Harendra Kumar
benchmark/Streamly/Benchmark/Data/Parser.hs+5
@@ -103,6 +103,10 @@ takeStartBy value stream = do
103takeWhile :: MonadCatch m => Int -> SerialT m Int -> m ()
103takeWhile :: MonadCatch m => Int -> SerialT m Int -> m ()
104takeWhile value = IP.parse (PR.takeWhile (<= value) FL.drain)
104takeWhile value = IP.parse (PR.takeWhile (<= value) FL.drain)
105
105
106+takeWhileP :: MonadCatch m => Int -> SerialT m Int -> m ()
107+takeWhileP value =
108+ IP.parse (PR.takeWhileP (<= value) (PR.takeWhile (<= value - 1) FL.drain))
109+
106{-# INLINE takeP #-}
110{-# INLINE takeP #-}
107takeP :: MonadCatch m => Int -> SerialT m a -> m ()
111takeP :: MonadCatch m => Int -> SerialT m a -> m ()
108takeP value = IP.parse (PR.takeP value (PR.fromFold FL.drain))
112takeP value = IP.parse (PR.takeP value (PR.fromFold FL.drain))
@@ -360,6 +364,7 @@ o_1_space_serial value =
360 , benchIOSink value "takeBetween" $ takeBetween value
364 , benchIOSink value "takeBetween" $ takeBetween value
361 , benchIOSink value "takeEQ" $ takeEQ value
365 , benchIOSink value "takeEQ" $ takeEQ value
362 , benchIOSink value "takeWhile" $ takeWhile value
366 , benchIOSink value "takeWhile" $ takeWhile value
367+ , benchIOSink value "takeWhileP" $ takeWhileP value
363 , benchIOSink value "takeP" $ takeP value
368 , benchIOSink value "takeP" $ takeP value
364 , benchIOSink value "dropWhile" $ dropWhile value
369 , benchIOSink value "dropWhile" $ dropWhile value
365 , benchIOSink value "takeStartBy" $ takeStartBy value
370 , benchIOSink value "takeStartBy" $ takeStartBy value