on master help sign in
Add benchmarks for joinInnerHash
commit9351485395b2713b8d717439192d9f9c429c01f4 authorRanjeet Kumar Ranjan <ranjeetr@composewell.com> dateFri 14 Jan 2022, 13:44 (5 years ago) parent9fdce7a
1 file changed+39
benchmark/Streamly/Benchmark/Prelude/Serial/NestedStream.hs+39
benchmark/Streamly/Benchmark/Prelude/Serial/NestedStream.hs+39
@@ -413,6 +413,42 @@ o_n_space_monad value =
413413 ]
414414 ]
415415
416+-------------------------------------------------------------------------------
417+-- Joining
418+-------------------------------------------------------------------------------
419+
420+toKvMap :: Int -> (Int, Int)
421+toKvMap p = (p, p)
422+
423+mkStreamLen :: (S.IsStream t, S.MonadAsync m) => Int -> t m Int
424+mkStreamLen count = sourceUnfoldrM count 0
425+
426+{-# INLINE joinInner #-}
427+joinInner :: Int -> Int -> Int -> IO ()
428+joinInner val1 val2 _ =
429+ S.drain $ Internal.joinInner (==) (mkStreamLen val1) $ mkStreamLen val2
430+
431+{-# INLINE joinInnerHash #-}
432+joinInnerHash :: Int -> Int -> Int -> IO ()
433+joinInnerHash val1 val2 _ =
434+ S.drain $
435+ Internal.joinInnerHash
436+ (fmap toKvMap (mkStreamLen val1))
437+ (fmap toKvMap (mkStreamLen val2))
438+
439+o_n_heap_buffering :: Int -> [Benchmark]
440+o_n_heap_buffering value =
441+ [ bgroup "buffered"
442+ [
443+ benchIOSrc1 "joinInner" (joinInner sqrtVal sqrtVal)
444+ , benchIOSrc1 "joinInnerHash" (joinInnerHash sqrtVal sqrtVal)
445+ ]
446+ ]
447+
448+ where
449+
450+ sqrtVal = round $ sqrt (fromIntegral value :: Double)
451+
416452-------------------------------------------------------------------------------
417453-- Main
418454-------------------------------------------------------------------------------
@@ -440,4 +476,7 @@ benchmarks moduleName size =
440476 , o_n_space_monad size
441477 , o_n_space_concat size
442478 ]
479+ , bgroup (o_n_heap_prefix moduleName) $
480+ -- multi-stream
481+ o_n_heap_buffering size
443482 ]