on master help sign in
add benchmark for takeWhile
commit5f4de8630ce046ecce6fdab8051cab360b82af94 authorHarendra Kumar <harendra@composewell.com> dateThu 9 Apr 2020, 02:57 (7 years ago) parent5e8f2c7
1 file changed+6−1
benchmark/Streamly/Benchmark/Data/Parser.hs+6−1
benchmark/Streamly/Benchmark/Data/Parser.hs+6−1
@@ -16,7 +16,7 @@ import Control.DeepSeq (NFData(..))
1616import Control.Monad.Catch (MonadCatch, MonadThrow)
1717-- import Data.Foldable (asum)
1818import System.Random (randomRIO)
19−import Prelude hiding (any, all, take, sequence, sequenceA)
19+import Prelude hiding (any, all, take, sequence, sequenceA, takeWhile)
2020
2121-- import qualified Data.Traversable as TR
2222import qualified Control.Applicative as AP
@@ -72,6 +72,10 @@ all value = IP.parse (PR.all (<= value))
7272take :: MonadThrow m => Int -> SerialT m a -> m ()
7373take value = IP.parse (PR.take value FL.drain)
7474
75+{-# INLINE takeWhile #-}
76+takeWhile :: MonadThrow m => Int -> SerialT m Int -> m ()
77+takeWhile value = IP.parse (PR.takeWhile (<= value) FL.drain)
78+
7579{-
7680-- XXX -fspec-constr-recursive=16 makes GHC go beserk when compiling this
7781{-# INLINE sequenceA #-}
@@ -166,6 +170,7 @@ o_1_space_serial_parse value =
166170 [ benchIOSink value "any" $ any value
167171 , benchIOSink value "all" $ all value
168172 , benchIOSink value "take" $ take value
173+ , benchIOSink value "takeWhile" $ takeWhile value
169174 , benchIOSink value "split (all,any)" $ splitAllAny value
170175 , benchIOSink value "many" many
171176 , benchIOSink value "some" some