on master help sign in
update base stream benchmarks
commitec0868181cbdce226757fa9465dcbe436fd08de7 authorHarendra Kumar <harendra.kumar@gmail.com> dateFri 13 Jul 2018, 19:27 (8 years ago) parent9606f86
3 files changed+35−25
benchmark/BaseStreams.hs+20−3 benchmark/StreamDOps.hs+14−21 benchmark/StreamKOps.hs+1−1
benchmark/BaseStreams.hs+20−3
@@ -46,8 +46,8 @@ main = do
4646 , benchIO "nullHeadTail" D.nullHeadTail D.sourceUnfoldrM
4747 ]
4848 , bgroup "transformation"
49− [ -- benchIO "scan" D.scan D.sourceUnfoldrM
50− benchIO "map" D.map D.sourceUnfoldrM
49+ [ benchIO "scanlM'" D.scan D.sourceUnfoldrM
50+ , benchIO "map" D.map D.sourceUnfoldrM
5151 , benchIO "mapM" D.mapM D.sourceUnfoldrM
5252 ]
5353 , bgroup "filtering"
@@ -55,6 +55,23 @@ main = do
5555 , benchIO "filter-all-out" D.filterAllOut D.sourceUnfoldrM
5656 , benchIO "filter-all-in" D.filterAllIn D.sourceUnfoldrM
5757 , benchIO "take-all" D.takeAll D.sourceUnfoldrM
58+ , benchIO "takeWhile-true" D.takeWhileTrue D.sourceUnfoldrM
59+ , benchIO "drop-all" D.dropAll D.sourceUnfoldrM
60+ , benchIO "dropWhile-true" D.dropWhileTrue D.sourceUnfoldrM
61+ ]
62+ , benchIO "zip" D.zip D.sourceUnfoldrM
63+ , bgroup "compose"
64+ [ benchIO "mapM" D.composeMapM D.sourceUnfoldrM
65+ , benchIO "map-with-all-in-filter" D.composeMapAllInFilter D.sourceUnfoldrM
66+ , benchIO "all-in-filters" D.composeAllInFilters D.sourceUnfoldrM
67+ , benchIO "all-out-filters" D.composeAllOutFilters D.sourceUnfoldrM
68+ ]
69+ -- Scaling with same operation in sequence
70+ , bgroup "compose-scaling"
71+ [ benchIO "1" (D.composeScaling 1) D.sourceUnfoldrM
72+ , benchIO "2" (D.composeScaling 2) D.sourceUnfoldrM
73+ , benchIO "3" (D.composeScaling 3) D.sourceUnfoldrM
74+ , benchIO "4" (D.composeScaling 4) D.sourceUnfoldrM
5875 ]
5976 ]
6077 , bgroup "streamK"
@@ -82,7 +99,7 @@ main = do
8299 [ benchIO "scan" K.scan K.sourceUnfoldrM
83100 , benchIO "map" K.map K.sourceUnfoldrM
84101 , benchIO "mapM" K.mapM K.sourceUnfoldrM
85− , benchIO "concat" K.concat K.sourceUnfoldrM
102+ -- , benchIO "concat" K.concat K.sourceUnfoldrM
86103 ]
87104 , bgroup "filtering"
88105 [ benchIO "filter-even" K.filterEven K.sourceUnfoldrM
benchmark/StreamDOps.hs+14−21
@@ -9,17 +9,14 @@
99
1010module StreamDOps where
1111
12−-- import Prelude
13− -- (Monad, Int, (+), ($), (.), return, fmap, even, (>), (<=),
14− -- subtract, undefined, Maybe(..))
1512import Prelude
16− (Monad, Int, (+), (.), return, (>), even, (<=),
17− Maybe(..), not)
13+ (Monad, Int, (+), ($), (.), return, (>), even, (<=),
14+ subtract, undefined, Maybe(..), not)
1815
1916import qualified Streamly.Streams.StreamD as S
2017
2118value, maxValue :: Int
22−value = 1000000
19+value = 100000
2320maxValue = value + 1000
2421
2522-------------------------------------------------------------------------------
@@ -28,34 +25,32 @@ maxValue = value + 1000
2825
2926{-# INLINE uncons #-}
3027{-# INLINE nullHeadTail #-}
31−-- {-# INLINE scan #-}
28+{-# INLINE scan #-}
3229{-# INLINE map #-}
3330{-# INLINE filterEven #-}
3431{-# INLINE filterAllOut #-}
3532{-# INLINE filterAllIn #-}
3633{-# INLINE takeOne #-}
3734{-# INLINE takeAll #-}
38−{-
3935{-# INLINE takeWhileTrue #-}
4036{-# INLINE dropAll #-}
4137{-# INLINE dropWhileTrue #-}
4238{-# INLINE zip #-}
39+{-
4340{-# INLINE concat #-}
41+-}
4442{-# INLINE composeAllInFilters #-}
4543{-# INLINE composeAllOutFilters #-}
4644{-# INLINE composeMapAllInFilter #-}
47−-}
48−uncons, nullHeadTail, map, filterEven, filterAllOut,
49− filterAllIn, takeOne, takeAll -- takeWhileTrue, dropAll, dropWhileTrue, zip,
50− -- concat, composeAllInFilters, composeAllOutFilters,
51− -- composeMapAllInFilter
45+uncons, nullHeadTail, map, scan, filterEven, filterAllOut,
46+ filterAllIn, takeOne, takeAll, takeWhileTrue, dropAll, dropWhileTrue, zip,
47+ -- concat,
48+ composeAllInFilters, composeAllOutFilters, composeMapAllInFilter
5249 :: Monad m
5350 => Stream m Int -> m ()
5451
55−{-
5652{-# INLINE composeMapM #-}
57−composeMapM :: S.MonadAsync m => Stream m Int -> m ()
58−-}
53+composeMapM :: Monad m => Stream m Int -> m ()
5954
6055{-# INLINE toList #-}
6156toList :: Monad m => Stream m Int -> m [Int]
@@ -140,7 +135,7 @@ last = S.last
140135transform :: Monad m => Stream m a -> m ()
141136transform = runStream
142137
143−-- scan = transform . S.scanl' (+) 0
138+scan = transform . S.scanlM' (\a b -> return (a + b)) 0
144139map = transform . S.map (+1)
145140mapM = transform . S.mapM return
146141filterEven = transform . S.filter even
@@ -148,7 +143,6 @@ filterAllOut = transform . S.filter (> maxValue)
148143filterAllIn = transform . S.filter (<= maxValue)
149144takeOne = transform . S.take 1
150145takeAll = transform . S.take maxValue
151−{-
152146takeWhileTrue = transform . S.takeWhile (<= maxValue)
153147dropAll = transform . S.drop maxValue
154148dropWhileTrue = transform . S.dropWhile (<= maxValue)
@@ -158,7 +152,7 @@ dropWhileTrue = transform . S.dropWhile (<= maxValue)
158152-------------------------------------------------------------------------------
159153
160154zip src = transform $ (S.zipWith (,) src src)
161−concat _n = return ()
155+-- concat _n = return ()
162156
163157-------------------------------------------------------------------------------
164158-- Composition
@@ -171,7 +165,7 @@ compose f = transform . f . f . f . f
171165composeMapM = compose (S.mapM return)
172166composeAllInFilters = compose (S.filter (<= maxValue))
173167composeAllOutFilters = compose (S.filter (> maxValue))
174−composeMapAllInFilter = compose (S.filter (<= maxValue) . fmap (subtract 1))
168+composeMapAllInFilter = compose (S.filter (<= maxValue) . S.map (subtract 1))
175169
176170{-# INLINABLE composeScaling #-}
177171composeScaling :: Monad m => Int -> Stream m Int -> m ()
@@ -183,4 +177,3 @@ composeScaling m =
183177 4 -> transform . f . f . f . f
184178 _ -> undefined
185179 where f = S.filter (<= maxValue)
186− -}
benchmark/StreamKOps.hs+1−1
@@ -18,7 +18,7 @@ import qualified Streamly.Streams.Prelude as S
1818import qualified Streamly.SVar as S
1919
2020value, maxValue :: Int
21−value = 1000000
21+value = 100000
2222maxValue = value + 1000
2323
2424-------------------------------------------------------------------------------