@@ -11,6 +11,7 @@
1111{-# LANGUAGE DeriveAnyClass #-}
1212{-# LANGUAGE DeriveGeneric #-}
1313{-# LANGUAGE RankNTypes #-}
14+{-# LANGUAGE TupleSections #-}
1415
1516#ifdef __HADDOCK_VERSION__
1617#undef INSPECTION
@@ -48,7 +49,7 @@ module Streamly.Benchmark.Prelude
4849
4950 , o_1_space_zipSerial_transformation
5051
51− , o_n_space_serial_toList
52+ , o_n_space_serial_toContainers
5253 , o_n_space_serial_outerProductStreams
5354
5455 , o_n_space_wSerial_outerProductStreams
@@ -101,9 +102,9 @@ import GHC.Generics (Generic)
101102import System.Random (randomRIO)
102103import Prelude
103104 (Monad, String, Int, (+), ($), (.), return, even, (>), (<=), (==), (>=),
104− subtract, undefined, Maybe(..), Bool, not, (>>=), curry,
105+ subtract, undefined, Maybe(..), Bool(..), not, (>>=), curry,
105106 maxBound, div, IO, compare, Double, fromIntegral, Integer, (<$>),
106− (<*>), flip, sqrt, round, (*), seq)
107+ (<*>), flip, sqrt, round, (*), seq, const, Either(..))
107108import qualified Prelude as P
108109import qualified Data.Foldable as F
109110import qualified GHC.Exts as GHC
@@ -549,6 +550,15 @@ tapAsync n = composeN n $ Internal.tapAsync FL.sum
549550timestamped :: (S.MonadAsync m) => Stream m Int -> m ()
550551timestamped = transform . Internal.timestamped
551552
553+{-# INLINE classifySessionsOf #-}
554+classifySessionsOf :: (S.MonadAsync m) => Stream m Int -> m ()
555+classifySessionsOf =
556+ transform
557+ . IP.classifySessionsOf 3 (const (return False)) (P.fmap Right FL.drain)
558+ . S.map (\(ts,(k,a)) -> (k, a, ts))
559+ . IP.timestamped
560+ . S.concatMap (\x -> S.map (x,) (S.enumerateFromTo 1 (10 :: Int)))
561+
552562{-# INLINE mapMaybe #-}
553563mapMaybe :: MonadIO m => Int -> Stream m Int -> m ()
554564mapMaybe n =
@@ -2128,8 +2138,8 @@ o_1_space_zipSerial_transformation value =
21282138-- Serial : O(n) Space
21292139-------------------------------------------------------------------------------
21302140
2131−o_n_space_serial_toList :: Int -> [Benchmark]
2132−o_n_space_serial_toList value =
2141+o_n_space_serial_toContainers :: Int -> [Benchmark]
2142+o_n_space_serial_toContainers value =
21332143 [ bgroup
21342144 "serially"
21352145 [ bgroup
@@ -2141,6 +2151,8 @@ o_n_space_serial_toList value =
21412151 -- , benchIOSink value "toPure" toPure
21422152 -- , benchIOSink value "toPureRev" toPureRev
21432153 ]
2154+ , benchIOSink (value `div` 10) "classifySessionsOf"
2155+ classifySessionsOf
21442156 ]
21452157 ]
21462158