on master help sign in
Add a benchmark for parseBreak on array streams
commit2831e125304bf32951cac1d464bb2d51590a22ee authorHarendra Kumar <harendra@composewell.com> dateFri 20 May 2022, 17:41 (4 years ago) parentd6b509e
1 file changed+13−1
benchmark/Streamly/Benchmark/Data/Array/Stream/Foreign.hs+13−1
benchmark/Streamly/Benchmark/Data/Array/Stream/Foreign.hs+13−1
@@ -25,7 +25,7 @@ module Main
2525
2626import Control.DeepSeq (NFData(..))
2727import Control.Monad (void, when)
28−import Control.Monad.Catch (MonadCatch)
28+import Control.Monad.Catch (MonadCatch, try, SomeException)
2929import Data.Functor.Identity (runIdentity)
3030import Data.Maybe (isJust)
3131import Data.Word (Word8)
@@ -240,6 +240,14 @@ foldBreak s = do
240240 (r, s1) <- ArrayStream.foldBreak Fold.one s
241241 when (isJust r) $ foldBreak s1
242242
243+{-# INLINE parseBreak #-}
244+parseBreak :: SerialT IO (Array.Array Int) -> IO ()
245+parseBreak s = do
246+ r <- try $ ArrayStream.parseBreak Parser.one s
247+ case r of
248+ Left (_ :: SomeException) -> return ()
249+ Right (_, s1) -> parseBreak s1
250+
243251o_1_space_serial_array ::
244252 Int -> [Array.Array Int] -> [Array.Array Int] -> [Benchmark]
245253o_1_space_serial_array bound arraysSmall arraysBig =
@@ -253,6 +261,10 @@ o_1_space_serial_array bound arraysSmall arraysBig =
253261 $ parse bound
254262 , benchIO "parse (single)" (\_ -> Stream.fromList arraysBig)
255263 $ parse bound
264+ , benchIO
265+ "parseBreak (recursive, small arrays)"
266+ (\_ -> Stream.fromList arraysSmall)
267+ parseBreak
256268 ]
257269
258270-------------------------------------------------------------------------------