on master help sign in
Use explicit buckets in classifySessions benchmarks

Terminate the session fold after 10 elements

commitba05f939b922d885f5ebda20cf47b0a24d1e93ed authorHarendra Kumar <harendra@composewell.com> dateThu 31 Mar 2022, 16:05 (5 years ago) parente0ad726
2 files changed+23−15
benchmark/Streamly/Benchmark/Prelude/Serial/NestedFold.hs+22−14 bin/bench-config.sh+1−1
benchmark/Streamly/Benchmark/Prelude/Serial/NestedFold.hs+22−14
@@ -10,7 +10,6 @@
1010{-# LANGUAGE DeriveAnyClass #-}
1111{-# LANGUAGE DeriveGeneric #-}
1212{-# LANGUAGE RankNTypes #-}
13−{-# LANGUAGE TupleSections #-}
1413
1514module Serial.NestedFold (benchmarks) where
1615
@@ -214,35 +213,44 @@ o_n_heap_buffering value =
214213-------------------------------------------------------------------------------
215214
216215{-# INLINE classifySessionsOf #-}
217−classifySessionsOf :: (S.MonadAsync m) => SerialT m Int -> m ()
218−classifySessionsOf =
216+classifySessionsOf :: S.MonadAsync m => (Int -> Int) -> SerialT m Int -> m ()
217+classifySessionsOf getKey =
219218 S.drain
220− . Internal.classifySessionsOf (const (return False)) 3 FL.drain
219+ . Internal.classifySessionsOf
220+ (const (return False)) 3 (FL.take 10 FL.sum)
221221 . Internal.timestamped
222− . S.concatMap (\x -> S.map (x,) (S.enumerateFromTo 1 (10 :: Int)))
222+ . S.map (\x -> (getKey x, x))
223223
224224{-# INLINE classifySessionsOfHash #-}
225−classifySessionsOfHash :: (S.MonadAsync m) => SerialT m Int -> m ()
226−classifySessionsOfHash =
225+classifySessionsOfHash :: S.MonadAsync m =>
226+ (Int -> Int) -> SerialT m Int -> m ()
227+classifySessionsOfHash getKey =
227228 S.drain
228229 . Internal.classifySessionsByGeneric
229230 (Proxy :: Proxy (HashMap k))
230− 1 False (const (return False)) 3 FL.drain
231+ 1 False (const (return False)) 3 (FL.take 10 FL.sum)
231232 . Internal.timestamped
232− . S.concatMap (\x -> S.map (x,) (S.enumerateFromTo 1 (10 :: Int)))
233+ . S.map (\x -> (getKey x, x))
233234
234235o_n_space_grouping :: Int -> [Benchmark]
235236o_n_space_grouping value =
236237 -- Buffering operations using heap proportional to group/window sizes.
237238 [ bgroup "grouping"
238− -- We use 10 element stream per input, so div by 10 here
239− [ benchIOSink (value `div` 10) "classifySessionsOf"
240− classifySessionsOf
241− , benchIOSink (value `div` 10) "classifySessionsOfHash"
242− classifySessionsOfHash
239+ [ benchIOSink value "classifySessionsOf (10000 buckets)"
240+ (classifySessionsOf (getKey 10000))
241+ , benchIOSink value "classifySessionsOf (64 buckets)"
242+ (classifySessionsOf (getKey 64))
243+ , benchIOSink value "classifySessionsOfHash (10000 buckets)"
244+ (classifySessionsOfHash (getKey 10000))
245+ , benchIOSink value "classifySessionsOfHash (64 buckets)"
246+ (classifySessionsOfHash (getKey 64))
243247 ]
244248 ]
245249
250+ where
251+
252+ getKey n = (`mod` n)
253+
246254-------------------------------------------------------------------------------
247255-- Mixed Transformation
248256-------------------------------------------------------------------------------
bin/bench-config.sh+1−1
@@ -68,7 +68,7 @@ bench_rts_options () {
6868 Prelude.Serial/o-1-space/mixed/sum-product-fold) echo -n "-K64M" ;;
6969
7070 # XXX These should be moved to o-n-space?
71− Prelude.Serial/o-n-heap/grouping/classifySessionsOf*) echo -n "-K1M -M32M" ;;
71+ Prelude.Serial/o-n-heap/grouping/classifySessionsOf*) echo -n "-K4M -M32M" ;;
7272 Prelude.Serial/o-n-heap/Functor/*) echo -n "-K4M -M32M" ;;
7373 Prelude.Serial/o-n-heap/transformer/*) echo -n "-K8M -M64M" ;;
7474