mirror of
https://github.com/ilyakooo0/streamly.git
synced 2024-10-06 21:27:35 +03:00
Add bind style benchmark for simple-conduit
This commit is contained in:
parent
38b5d7ef08
commit
992195e20d
@ -85,6 +85,7 @@ main = do
|
||||
, bench "logict" $ nfIO logict_basic
|
||||
, bench "list-t" $ nfIO list_t_basic
|
||||
, bench "simple-conduit" $ nfIO simple_conduit_basic
|
||||
, bench "simple-conduit-bind" $ nfIO simple_conduit_bind
|
||||
, bench "machines" $ nfIO machines_basic
|
||||
]
|
||||
#endif
|
||||
@ -270,6 +271,23 @@ simple_conduit_basic = do
|
||||
assert (Prelude.length xs == 49900) $
|
||||
return (Prelude.length (xs :: [Int]))
|
||||
|
||||
smap :: Monad (s IO) => (Int -> Int) -> Int -> s IO Int
|
||||
smap = Main.map
|
||||
|
||||
sfilter :: (Alternative (s IO), Monad (s IO)) => (Int -> Bool) -> Int -> s IO Int
|
||||
sfilter = Main.filter
|
||||
|
||||
{-# INLINE simple_conduit_bind #-}
|
||||
simple_conduit_bind :: IO Int
|
||||
simple_conduit_bind = do
|
||||
xs <- S.sinkList $ do
|
||||
S.dropC 100 (S.sourceList [1..100000 :: Int] >>= \x ->
|
||||
sfilter even x >>= smap (+1))
|
||||
>>= smap (+1)
|
||||
>>= sfilter (\y -> y `mod` 2 == 0)
|
||||
assert (Prelude.length xs == 49900) $
|
||||
return (Prelude.length xs)
|
||||
|
||||
machines_basic :: IO Int
|
||||
machines_basic = do
|
||||
xs <- M.runT $ M.source [1..100000]
|
||||
|
Loading…
Reference in New Issue
Block a user