@@ -173,149 +173,141 @@ moduleName = "Data.Fold"
174o_1_space_serial_elimination :: Int -> [Benchmark]
174o_1_space_serial_elimination :: Int -> [Benchmark]
175o_1_space_serial_elimination value =
175o_1_space_serial_elimination value =
177− [ bgroup "elimination"
176+ [ bgroup "elimination"
178− [ benchIOSink value "drain" (S.fold FL.drain)
177+ [ benchIOSink value "drain" (S.fold FL.drain)
179− , benchIOSink value "drainBy" (S.fold (FL.drainBy return))
178+ , benchIOSink value "drainBy" (S.fold (FL.drainBy return))
180− , benchIOSink value "drainN" (S.fold (FL.drainN value))
179+ , benchIOSink value "drainN" (S.fold (FL.drainN value))
181− , benchIOSink
180+ , benchIOSink
183− "drainSepByTrue"
182+ "drainSepByTrue"
184− (S.fold (FL.drainSepBy $ (<=) (value + 1)))
183+ (S.fold (FL.drainSepBy $ (<=) (value + 1)))
185− , benchIOSink
184+ , benchIOSink
187− "drainSepByFalse"
186+ "drainSepByFalse"
188− (S.fold (FL.drainSepBy $ (>=) (value + 1)))
187+ (S.fold (FL.drainSepBy $ (>=) (value + 1)))
189− , benchIOSink value "sink" (S.fold $ Sink.toFold Sink.drain)
188+ , benchIOSink value "sink" (S.fold $ Sink.toFold Sink.drain)
190− , benchIOSink value "last" (S.fold FL.last)
189+ , benchIOSink value "last" (S.fold FL.last)
191− , benchIOSink value "length" (S.fold FL.length)
190+ , benchIOSink value "length" (S.fold FL.length)
192− , benchIOSink value "sum" (S.fold FL.sum)
191+ , benchIOSink value "sum" (S.fold FL.sum)
193− , benchIOSink value "sum (foldMap)" (S.fold (FL.foldMap Sum))
192+ , benchIOSink value "sum (foldMap)" (S.fold (FL.foldMap Sum))
194− , benchIOSink value "product" (S.fold FL.product)
193+ , benchIOSink value "product" (S.fold FL.product)
195− , benchIOSink value "maximumBy" (S.fold (FL.maximumBy compare))
194+ , benchIOSink value "maximumBy" (S.fold (FL.maximumBy compare))
196− , benchIOSink value "maximum" (S.fold FL.maximum)
195+ , benchIOSink value "maximum" (S.fold FL.maximum)
197− , benchIOSink value "minimumBy" (S.fold (FL.minimumBy compare))
196+ , benchIOSink value "minimumBy" (S.fold (FL.minimumBy compare))
198− , benchIOSink value "minimum" (S.fold FL.minimum)
197+ , benchIOSink value "minimum" (S.fold FL.minimum)
199− , benchIOSink
198+ , benchIOSink
205− (S.map (fromIntegral :: Int -> Double) s))
204+ (S.map (fromIntegral :: Int -> Double) s))
206− , benchIOSink
205+ , benchIOSink
208− "variance"
207+ "variance"
211− FL.variance
210+ FL.variance
212− (S.map (fromIntegral :: Int -> Double) s))
211+ (S.map (fromIntegral :: Int -> Double) s))
213− , benchIOSink
212+ , benchIOSink
215− "stdDev"
214+ "stdDev"
218− FL.stdDev
217+ FL.stdDev
219− (S.map (fromIntegral :: Int -> Double) s))
218+ (S.map (fromIntegral :: Int -> Double) s))
220− , benchIOSink
219+ , benchIOSink
222− "mconcat"
221+ "mconcat"
223− (S.fold FL.mconcat . (S.map (Last . Just)))
222+ (S.fold FL.mconcat . (S.map (Last . Just)))
224− , benchIOSink
223+ , benchIOSink
226− "foldMap"
225+ "foldMap"
227− (S.fold (FL.foldMap (Last . Just)))
226+ (S.fold (FL.foldMap (Last . Just)))
228− , benchIOSink
227+ , benchIOSink
230− "foldMapM"
229+ "foldMapM"
231− (S.fold (FL.foldMapM (return . Last . Just)))
230+ (S.fold (FL.foldMapM (return . Last . Just)))
232− , benchIOSink value "index" (S.fold (FL.index (value + 1)))
231+ , benchIOSink value "index" (S.fold (FL.index (value + 1)))
233− , benchIOSink value "head" (S.fold FL.head)
232+ , benchIOSink value "head" (S.fold FL.head)
234− , benchIOSink value "find" (S.fold (FL.find (== (value + 1))))
233+ , benchIOSink value "find" (S.fold (FL.find (== (value + 1))))
235− , benchIOSink
234+ , benchIOSink
237− "lookup"
236+ "lookup"
238− (S.fold (FL.lmap (\a -> (a, a)) (FL.lookup (value + 1))))
237+ (S.fold (FL.lmap (\a -> (a, a)) (FL.lookup (value + 1))))
239− , benchIOSink
238+ , benchIOSink
241− "findIndex"
240+ "findIndex"
242− (S.fold (FL.findIndex (== (value + 1))))
241+ (S.fold (FL.findIndex (== (value + 1))))
243− , benchIOSink
242+ , benchIOSink
245− "elemIndex"
244+ "elemIndex"
246− (S.fold (FL.elemIndex (value + 1)))
245+ (S.fold (FL.elemIndex (value + 1)))
247− , benchIOSink value "null" (S.fold FL.null)
246+ , benchIOSink value "null" (S.fold FL.null)
248− , benchIOSink value "elem" (S.fold (FL.elem (value + 1)))
247+ , benchIOSink value "elem" (S.fold (FL.elem (value + 1)))
249− , benchIOSink value "notElem" (S.fold (FL.notElem (value + 1)))
248+ , benchIOSink value "notElem" (S.fold (FL.notElem (value + 1)))
250− , benchIOSink value "all" $ all value
249+ , benchIOSink value "all" $ all value
251− , benchIOSink value "any" $ any value
250+ , benchIOSink value "any" $ any value
252− , benchIOSink value "take" $ take value
251+ , benchIOSink value "take" $ take value
253− , benchIOSink value "takeSepBy" $ takeSepBy value
252+ , benchIOSink value "takeSepBy" $ takeSepBy value
254− , benchIOSink
253+ , benchIOSink
257− (\s -> S.fold FL.and (S.map (<= (value + 1)) s))
256+ (\s -> S.fold FL.and (S.map (<= (value + 1)) s))
258− , benchIOSink
257+ , benchIOSink
261− (\s -> S.fold FL.or (S.map (> (value + 1)) s))
260+ (\s -> S.fold FL.or (S.map (> (value + 1)) s))
267o_1_space_serial_transformation :: Int -> [Benchmark]
264o_1_space_serial_transformation :: Int -> [Benchmark]
268o_1_space_serial_transformation value =
265o_1_space_serial_transformation value =
270− [ bgroup "transformation"
266+ [ bgroup "transformation"
271− [ benchIOSink value "lmap" (S.fold (FL.lmap (+ 1) FL.drain))
267+ [ benchIOSink value "lmap" (S.fold (FL.lmap (+ 1) FL.drain))
272− , let f x = if even x then Just x else Nothing
268+ , let f x = if even x then Just x else Nothing
273− fld = FL.mapMaybe f FL.drain
269+ fld = FL.mapMaybe f FL.drain
274− in benchIOSink value "mapMaybe" (S.fold fld)
270+ in benchIOSink value "mapMaybe" (S.fold fld)
275− , benchIOSink
271+ , benchIOSink
277− "sequence"
273+ "sequence"
278− (S.fold (FL.sequence (return <$> FL.drain)))
274+ (S.fold (FL.sequence (return <$> FL.drain)))
279− , benchIOSink value "mapM" (S.fold (FL.mapM return FL.drain))
275+ , benchIOSink value "mapM" (S.fold (FL.mapM return FL.drain))
280− , benchIOSink
276+ , benchIOSink
282− "pipe-mapM"
278+ "pipe-mapM"
284− (FL.transform
280+ (FL.transform
285− (Pipe.mapM (\x -> return $ x + 1))
281+ (Pipe.mapM (\x -> return $ x + 1))
286− FL.drain))
282+ FL.drain))
291o_1_space_serial_composition :: Int -> [Benchmark]
286o_1_space_serial_composition :: Int -> [Benchmark]
292o_1_space_serial_composition value =
287o_1_space_serial_composition value =
293− [ bgroup
288+ [ bgroup
296− "composition"
289+ "composition"
297− -- Applicative
290+ -- Applicative
298− [ benchIOSink value "tee (all, any)" $ teeAllAny value
291+ [ benchIOSink value "tee (all, any)" $ teeAllAny value
299− , benchIOSink value "tee (sum, length)" $ teeSumLength
292+ , benchIOSink value "tee (sum, length)" $ teeSumLength
300− -- , benchIOSink value "applicative (all, any)"
293+ -- , benchIOSink value "applicative (all, any)"
301− -- $ applicativeAllAny value
294+ -- $ applicativeAllAny value
302− -- , benchIOSink value "applicative (sum, length)"
295+ -- , benchIOSink value "applicative (sum, length)"
303− -- $ applicativeSumLength
296+ -- $ applicativeSumLength
304− , benchIOSink value "distribute_ [sum, length]" $ distribute_
297+ , benchIOSink value "distribute_ [sum, length]" $ distribute_
305− , benchIOSink value "distribute [sum, length]" $ distribute
298+ , benchIOSink value "distribute [sum, length]" $ distribute
306− , benchIOSink value "partition (sum, length)" $ partition
299+ , benchIOSink value "partition (sum, length)" $ partition
307− , benchIOSink value "unzip (sum, length)" $ unzip
300+ , benchIOSink value "unzip (sum, length)" $ unzip
308− , benchIOSink value "demuxWith [sum, length]" $ demuxWith fn mp
301+ , benchIOSink value "demuxWith [sum, length]" $ demuxWith fn mp
309− , benchIOSink value "demuxWith_ [sum, length]"
302+ , benchIOSink value "demuxWith_ [sum, length]"
310− $ demuxWith_ fn mp
303+ $ demuxWith_ fn mp
311− , benchIOSink value "demuxWithDefault_ [sum, length] sum"
304+ , benchIOSink value "demuxWithDefault_ [sum, length] sum"
312− $ demuxWithDefault_ fn mp
305+ $ demuxWithDefault_ fn mp
313− , benchIOSink value "classifyWith sum" $ classifyWith (fst . fn)
306+ , benchIOSink value "classifyWith sum" $ classifyWith (fst . fn)
314− , benchIOSink value "many length sum" many
307+ , benchIOSink value "many length sum" many
315− , benchIOSink value "split (all, any)" $ splitAllAny value
308+ , benchIOSink value "split (all, any)" $ splitAllAny value
@@ -325,15 +317,13 @@ o_1_space_serial_composition value =
326o_n_heap_serial :: Int -> [Benchmark]
318o_n_heap_serial :: Int -> [Benchmark]
327o_n_heap_serial value =
319o_n_heap_serial value =
329− [ bgroup "elimination"
320+ [ bgroup "elimination"
330− -- Left folds for building a structure are inherently non-streaming
321+ -- Left folds for building a structure are inherently non-streaming
331− -- as the structure cannot be lazily consumed until fully built.
322+ -- as the structure cannot be lazily consumed until fully built.
333− benchIOSink value "toList" (S.fold FL.toList)
324+ benchIOSink value "toList" (S.fold FL.toList)
334− , benchIOSink value "toListRevF" (S.fold FL.toListRevF)
325+ , benchIOSink value "toListRevF" (S.fold FL.toListRevF)
339-------------------------------------------------------------------------------
329-------------------------------------------------------------------------------