@@ -413,6 +413,42 @@ o_n_space_monad value =
416+-------------------------------------------------------------------------------
418+-------------------------------------------------------------------------------
420+toKvMap :: Int -> (Int, Int)
423+mkStreamLen :: (S.IsStream t, S.MonadAsync m) => Int -> t m Int
424+mkStreamLen count = sourceUnfoldrM count 0
426+{-# INLINE joinInner #-}
427+joinInner :: Int -> Int -> Int -> IO ()
428+joinInner val1 val2 _ =
429+ S.drain $ Internal.joinInner (==) (mkStreamLen val1) $ mkStreamLen val2
431+{-# INLINE joinInnerHash #-}
432+joinInnerHash :: Int -> Int -> Int -> IO ()
433+joinInnerHash val1 val2 _ =
435+ Internal.joinInnerHash
436+ (fmap toKvMap (mkStreamLen val1))
437+ (fmap toKvMap (mkStreamLen val2))
439+o_n_heap_buffering :: Int -> [Benchmark]
440+o_n_heap_buffering value =
443+ benchIOSrc1 "joinInner" (joinInner sqrtVal sqrtVal)
444+ , benchIOSrc1 "joinInnerHash" (joinInnerHash sqrtVal sqrtVal)
450+ sqrtVal = round $ sqrt (fromIntegral value :: Double)
416-------------------------------------------------------------------------------
452-------------------------------------------------------------------------------
418-------------------------------------------------------------------------------
454-------------------------------------------------------------------------------
@@ -440,4 +476,7 @@ benchmarks moduleName size =
440 , o_n_space_monad size
476 , o_n_space_monad size
441 , o_n_space_concat size
477 , o_n_space_concat size
479+ , bgroup (o_n_heap_prefix moduleName) $
481+ o_n_heap_buffering size