on master help sign in
Add dropWhileFalse/dropOne

Also, disable monadic versions of drop/take. Pure versions use the monadic ones internally so the monadic benchmarks are redundant unless we change the implementations in future.

commitc8aaba38cbd8117aa18355c976d62fb04fd8098c authorHarendra Kumar <harendra.kumar@gmail.com> dateWed 31 Oct 2018, 16:50 (8 years ago) parent3524799
2 files changed+15−7
benchmark/Linear.hs+9−5 benchmark/LinearOps.hs+6−2
benchmark/Linear.hs+9−5
@@ -115,10 +115,12 @@ main =
115115 , benchIO "filter-all-in" (Ops.filterAllIn 1)
116116 , benchIO "take-all" (Ops.takeAll 1)
117117 , benchIO "takeWhile-true" (Ops.takeWhileTrue 1)
118− , benchIO "takeWhileM-true" (Ops.takeWhileMTrue 1)
118+ --, benchIO "takeWhileM-true" (Ops.takeWhileMTrue 1)
119+ , benchIO "drop-one" (Ops.dropOne 1)
119120 , benchIO "drop-all" (Ops.dropAll 1)
120121 , benchIO "dropWhile-true" (Ops.dropWhileTrue 1)
121− , benchIO "dropWhileM-true" (Ops.dropWhileMTrue 1)
122+ --, benchIO "dropWhileM-true" (Ops.dropWhileMTrue 1)
123+ , benchIO "dropWhile-false" (Ops.dropWhileFalse 1)
122124 ]
123125 , bgroup "filteringN"
124126 [ benchIO "filter-even" (Ops.filterEven 4)
@@ -126,10 +128,12 @@ main =
126128 , benchIO "filter-all-in" (Ops.filterAllIn 4)
127129 , benchIO "take-all" (Ops.takeAll 4)
128130 , benchIO "takeWhile-true" (Ops.takeWhileTrue 4)
129− , benchIO "takeWhileM-true" (Ops.takeWhileMTrue 4)
131+ --, benchIO "takeWhileM-true" (Ops.takeWhileMTrue 4)
132+ , benchIO "drop-one" (Ops.dropOne 4)
130133 , benchIO "drop-all" (Ops.dropAll 4)
131134 , benchIO "dropWhile-true" (Ops.dropWhileTrue 4)
132− , benchIO "dropWhileM-true" (Ops.dropWhileMTrue 4)
135+ --, benchIO "dropWhileM-true" (Ops.dropWhileMTrue 4)
136+ , benchIO "dropWhile-false" (Ops.dropWhileFalse 4)
133137 ]
134138 , benchIO "zip" Ops.zip
135139 , benchIO "zipM" Ops.zipM
@@ -147,7 +151,7 @@ main =
147151 ]
148152 , bgroup "iterated"
149153 [ benchSrcIO serially "mapM" Ops.iterateMapM
150− , benchSrcIO serially "scan" Ops.iterateScan
154+ , benchSrcIO serially "scan(1/100)" Ops.iterateScan
151155 , benchSrcIO serially "filterEven" Ops.iterateFilterEven
152156 , benchSrcIO serially "takeAll" Ops.iterateTakeAll
153157 , benchSrcIO serially "dropOne" Ops.iterateDropOne
benchmark/LinearOps.hs+6−2
@@ -242,14 +242,16 @@ composeN' n f =
242242{-# INLINE takeAll #-}
243243{-# INLINE takeWhileTrue #-}
244244{-# INLINE takeWhileMTrue #-}
245+{-# INLINE dropOne #-}
245246{-# INLINE dropAll #-}
246247{-# INLINE dropWhileTrue #-}
247248{-# INLINE dropWhileMTrue #-}
249+{-# INLINE dropWhileFalse #-}
248250{-# INLINE findIndices #-}
249251{-# INLINE elemIndices #-}
250252scan, map, fmap, mapMaybe, filterEven, filterAllOut,
251− filterAllIn, takeOne, takeAll, takeWhileTrue, takeWhileMTrue, dropAll,
252− dropWhileTrue, dropWhileMTrue,
253+ filterAllIn, takeOne, takeAll, takeWhileTrue, takeWhileMTrue, dropOne,
254+ dropAll, dropWhileTrue, dropWhileMTrue, dropWhileFalse,
253255 findIndices, elemIndices
254256 :: Monad m
255257 => Int -> Stream m Int -> m ()
@@ -281,9 +283,11 @@ takeOne n = composeN n $ S.take 1
281283takeAll n = composeN n $ S.take maxValue
282284takeWhileTrue n = composeN n $ S.takeWhile (<= maxValue)
283285takeWhileMTrue n = composeN n $ S.takeWhileM (return . (<= maxValue))
286+dropOne n = composeN n $ S.drop 1
284287dropAll n = composeN n $ S.drop maxValue
285288dropWhileTrue n = composeN n $ S.dropWhile (<= maxValue)
286289dropWhileMTrue n = composeN n $ S.dropWhileM (return . (<= maxValue))
290+dropWhileFalse n = composeN n $ S.dropWhile (<= 1)
287291findIndices n = composeN n $ S.findIndices (== maxValue)
288292elemIndices n = composeN n $ S.elemIndices maxValue
289293