on master help sign in
Use from-to style instead of take-from in many unfold benchmarks
commitb1a9af0d7d452f7657891c47829adb8c9b8749b3 authoradithyaov <adithya@composewell.com> dateFri 23 Oct 2020, 10:27 (6 years ago) parent8e4f68d
1 file changed+33−23
benchmark/Streamly/Benchmark/Data/Unfold.hs+33−23
benchmark/Streamly/Benchmark/Data/Unfold.hs+33−23
@@ -45,8 +45,8 @@ drainTransformation unf f seed = drainGeneration (f unf) seed
4545{-# INLINE drainTransformationDefault #-}
4646drainTransformationDefault ::
4747 Monad m => Int -> (Unfold m Int Int -> Unfold m c d) -> c -> m ()
48−drainTransformationDefault size =
49− drainTransformation (UF.take size UF.enumerateFromIntegral)
48+drainTransformationDefault to =
49+ drainTransformation (UF.enumerateFromToIntegral to)
5050
5151{-# INLINE drainProduct #-}
5252drainProduct ::
@@ -65,12 +65,11 @@ drainProductDefault ::
6565 -> (Unfold m Int Int -> Unfold m Int Int -> Unfold m e f)
6666 -> e
6767 -> m ()
68−drainProductDefault size = drainProduct src1 src2
68+drainProductDefault to = drainProduct src src
6969
7070 where
7171
72− src1 = UF.take size UF.enumerateFromIntegral
73− src2 = UF.take size (UF.supplySecond UF.enumerateFromStepIntegral 2)
72+ src = UF.enumerateFromToIntegral to
7473
7574-------------------------------------------------------------------------------
7675-- Operations on input
@@ -78,17 +77,18 @@ drainProductDefault size = drainProduct src1 src2
7877
7978{-# INLINE lmap #-}
8079lmap :: Monad m => Int -> Int -> m ()
81−lmap size start = drainTransformationDefault size (UF.lmap (+ 1)) start
80+lmap size start =
81+ drainTransformationDefault (size + start) (UF.lmap (+ 1)) start
8282
8383{-# INLINE lmapM #-}
8484lmapM :: Monad m => Int -> Int -> m ()
8585lmapM size start =
86− drainTransformationDefault size (UF.lmapM (return . (+) 1)) start
86+ drainTransformationDefault (size + start) (UF.lmapM (return . (+) 1)) start
8787
8888{-# INLINE supply #-}
8989supply :: Monad m => Int -> Int -> m ()
9090supply size start =
91− drainTransformationDefault size (flip UF.supply start) undefined
91+ drainTransformationDefault (size + start) (flip UF.supply start) undefined
9292
9393
9494{-# INLINE supplyFirst #-}
@@ -110,12 +110,12 @@ supplySecond size start =
110110{-# INLINE discardFirst #-}
111111discardFirst :: Monad m => Int -> Int -> m ()
112112discardFirst size start =
113− drainTransformationDefault size UF.discardFirst (start, start)
113+ drainTransformationDefault (size + start) UF.discardFirst (start, start)
114114
115115{-# INLINE discardSecond #-}
116116discardSecond :: Monad m => Int -> Int -> m ()
117117discardSecond size start =
118− drainTransformationDefault size UF.discardSecond (start, start)
118+ drainTransformationDefault (size + start) UF.discardSecond (start, start)
119119
120120{-# INLINE swap #-}
121121swap :: Monad m => Int -> Int -> m ()
@@ -151,7 +151,8 @@ _nilM _ start = drainGeneration (UF.nilM return) start
151151
152152{-# INLINE consM #-}
153153consM :: Monad m => Int -> Int -> m ()
154−consM size start = drainTransformationDefault size (UF.consM return) start
154+consM size start =
155+ drainTransformationDefault (size + start) (UF.consM return) start
155156
156157{-# INLINE _effect #-}
157158_effect :: Monad m => Int -> Int -> m ()
@@ -260,12 +261,12 @@ enumerateFromToFractional size start =
260261
261262{-# INLINE map #-}
262263map :: Monad m => Int -> Int -> m ()
263−map size start = drainTransformationDefault size (UF.map (+1)) start
264+map size start = drainTransformationDefault (size + start) (UF.map (+1)) start
264265
265266{-# INLINE mapM #-}
266267mapM :: Monad m => Int -> Int -> m ()
267268mapM size start =
268− drainTransformationDefault size (UF.mapM (return . (+) 1)) start
269+ drainTransformationDefault (size + start) (UF.mapM (return . (+) 1)) start
269270
270271{-# INLINE mapMWithInput #-}
271272mapMWithInput :: Monad m => Int -> Int -> m ()
@@ -297,37 +298,46 @@ takeWhile size start =
297298
298299{-# INLINE take #-}
299300take :: Monad m => Int -> Int -> m ()
300−take size start = drainTransformationDefault size (UF.take size) start
301+take size start = drainTransformationDefault (size + start) (UF.take size) start
301302
302303{-# INLINE filter #-}
303304filter :: Monad m => Int -> Int -> m ()
304305filter size start =
305− drainTransformationDefault size (UF.filter (\_ -> True)) start
306+ drainTransformationDefault (size + start) (UF.filter (\_ -> True)) start
306307
307308{-# INLINE filterM #-}
308309filterM :: Monad m => Int -> Int -> m ()
309310filterM size start =
310− drainTransformationDefault size (UF.filterM (\_ -> (return True))) start
311+ drainTransformationDefault
312+ (size + start)
313+ (UF.filterM (\_ -> (return True)))
314+ start
311315
312316{-# INLINE _dropOne #-}
313317_dropOne :: Monad m => Int -> Int -> m ()
314318_dropOne size start =
315− drainTransformationDefault size (UF.drop 1) start
319+ drainTransformationDefault (size + start) (UF.drop 1) start
316320
317321{-# INLINE dropAll #-}
318322dropAll :: Monad m => Int -> Int -> m ()
319323dropAll size start =
320− drainTransformationDefault size (UF.drop (size + 1)) start
324+ drainTransformationDefault (size + start) (UF.drop (size + 1)) start
321325
322326{-# INLINE dropWhileTrue #-}
323327dropWhileTrue :: Monad m => Int -> Int -> m ()
324328dropWhileTrue size start =
325− drainTransformationDefault size (UF.dropWhileM (\_ -> return True)) start
329+ drainTransformationDefault
330+ (size + start)
331+ (UF.dropWhileM (\_ -> return True))
332+ start
326333
327334{-# INLINE dropWhileFalse #-}
328335dropWhileFalse :: Monad m => Int -> Int -> m ()
329336dropWhileFalse size start =
330− drainTransformationDefault size (UF.dropWhileM (\_ -> return False)) start
337+ drainTransformationDefault
338+ (size + start)
339+ (UF.dropWhileM (\_ -> return False))
340+ start
331341
332342{-# INLINE dropWhileMTrue #-}
333343dropWhileMTrue :: Monad m => Int -> Int -> m ()
@@ -352,20 +362,20 @@ dropWhileMFalse size start =
352362{-# INLINE zipWith #-}
353363zipWith :: Monad m => Int -> Int -> m ()
354364zipWith size start =
355− drainProductDefault size (UF.zipWith (+)) (start, start + 1)
365+ drainProductDefault (size + start) (UF.zipWith (+)) (start, start + 1)
356366
357367{-# INLINE zipWithM #-}
358368zipWithM :: Monad m => Int -> Int -> m ()
359369zipWithM size start =
360370 drainProductDefault
361− size
371+ (size + start)
362372 (UF.zipWithM (\a b -> return $ a + b))
363373 (start, start + 1)
364374
365375{-# INLINE teeZipWith #-}
366376teeZipWith :: Monad m => Int -> Int -> m ()
367377teeZipWith size start =
368− drainProductDefault size (UF.teeZipWith (+)) start
378+ drainProductDefault (size + start) (UF.teeZipWith (+)) start
369379
370380-------------------------------------------------------------------------------
371381-- Nested