@@ -420,43 +420,41 @@ o_n_space_monad value =
420toKvMap :: Int -> (Int, Int)
420toKvMap :: Int -> (Int, Int)
421toKvMap p = (p, p)
421toKvMap p = (p, p)
423−mkStreamLen :: (S.IsStream t, S.MonadAsync m) => Int -> t m Int
423+{-# INLINE joinWith #-}
424−mkStreamLen count = sourceUnfoldrM count 0
424+joinWith :: (S.MonadAsync m) =>
425−
425+ ((Int -> Int -> Bool) -> SerialT m Int -> SerialT m Int -> SerialT m b)
426−{-# INLINE joinInner #-}
426+ -> Int
427−joinInner :: Int -> Int -> Int -> IO ()
427+ -> Int
428−joinInner val1 val2 _ =
430+joinWith j val1 val2 i =
429− S.drain $ Internal.joinInner (==) (mkStreamLen val1) $ mkStreamLen val2
431+ S.drain $ j (==) (sourceUnfoldrM val1 i) (sourceUnfoldrM val2 i)
431−{-# INLINE joinInnerMap #-}
433+{-# INLINE joinMapWith #-}
432−joinInnerMap :: Int -> Int -> Int -> IO ()
434+joinMapWith :: (S.MonadAsync m) =>
433−joinInnerMap val1 val2 _ =
435+ (SerialT m (Int, Int) -> SerialT m (Int, Int) -> SerialT m b)
434− S.drain $
436+ -> Int
435− Internal.joinInnerMap
437+ -> Int
436− (fmap toKvMap (mkStreamLen val1))
438+ -> Int
437− (fmap toKvMap (mkStreamLen val2))
439+ -> m ()
438−
440+joinMapWith j val1 val2 i =
439−{-# INLINE joinOuter #-}
440−joinOuter :: Int -> Int -> Int -> IO ()
441−joinOuter val1 val2 _ =
442− S.drain $ Internal.joinOuter (==) (mkStreamLen val1) $ mkStreamLen val2
444−{-# INLINE joinOuterMap #-}
445−joinOuterMap :: Int -> Int -> Int -> IO ()
446−joinOuterMap val1 val2 _ =
447− S.drain $
441+ S.drain
448− Internal.joinOuterMap
442+ $ j
449− (fmap toKvMap (mkStreamLen val1))
443+ (fmap toKvMap (sourceUnfoldrM val1 i))
450− (fmap toKvMap (mkStreamLen val2))
444+ (fmap toKvMap (sourceUnfoldrM val2 i))
452o_n_heap_buffering :: Int -> [Benchmark]
446o_n_heap_buffering :: Int -> [Benchmark]
453o_n_heap_buffering value =
447o_n_heap_buffering value =
454 [ bgroup "buffered"
448 [ bgroup "buffered"
456− benchIOSrc1 "joinInner" (joinInner sqrtVal sqrtVal)
450+ benchIOSrc1 "joinInner"
451+ $ joinWith Internal.joinInner sqrtVal sqrtVal
457− , benchIOSrc1 "joinInnerMap" (joinInnerMap sqrtVal sqrtVal)
452+ , benchIOSrc1 "joinInnerMap"
453+ $ joinMapWith Internal.joinInnerMap sqrtVal sqrtVal
458− , benchIOSrc1 "joinOuter" (joinOuter sqrtVal sqrtVal)
454+ , benchIOSrc1 "joinOuter"
455+ $ joinWith Internal.joinOuter sqrtVal sqrtVal
459− , benchIOSrc1 "joinOuterMap" (joinOuterMap sqrtVal sqrtVal)
456+ , benchIOSrc1 "joinOuterMap"
457+ $ joinMapWith Internal.joinOuterMap sqrtVal sqrtVal