on master help sign in
Add enumarate combinators to the serial generation benchmark group
commita06f8c4bd166cd4cafe5a70de5952556adcafd4d authoradithyaov <adi.obilisetty@gmail.com> dateTue 6 Oct 2020, 15:43 (6 years ago) parentc718880
1 file changed+13−2
benchmark/Streamly/Benchmark/Prelude/Serial.hs+13−2
benchmark/Streamly/Benchmark/Prelude/Serial.hs+13−2
@@ -130,8 +130,15 @@ enumerateFromThen count inp = S.take count $ S.enumerateFromThen inp (inp + 1)
130130enumerateFromThenTo :: (Monad m, S.IsStream t) => Int -> Int -> t m Int
131131enumerateFromThenTo = sourceIntFromThenTo
132132
133−-- XXX enumerate?
134−-- XXX enumerateTo?
133+-- n ~ 1
134+{-# INLINE enumerate #-}
135+enumerate :: (Monad m, S.IsStream t) => Int -> Int -> t m Int
136+enumerate count n = S.take (count + n) $ S.enumerate
137+
138+-- n ~ 1
139+{-# INLINE enumerateTo #-}
140+enumerateTo :: (Monad m, S.IsStream t) => Int -> Int -> t m Int
141+enumerateTo count n = S.enumerateFrom (minBound + count + n)
135142
136143{-# INLINE iterate #-}
137144iterate :: (Monad m, S.IsStream t) => Int -> Int -> t m Int
@@ -171,6 +178,10 @@ o_1_space_generation value =
171178 , benchPureSrc "IsList.fromList" (sourceIsList value)
172179 , benchPureSrc "IsString.fromString" (sourceIsString value)
173180 , benchIOSrc serially "fromListM" (sourceFromListM value)
181+ , benchIOSrc serially "enumerateFrom" (enumerateFrom value)
182+ , benchIOSrc serially "enumerateFromThen" (enumerateFromThen value)
183+ , benchIOSrc serially "enumerate" (enumerate value)
184+ , benchIOSrc serially "enumerateTo" (enumerateTo value)
174185
175186 -- These essentially test cons and consM
176187 , benchIOSrc serially "fromFoldable" (sourceFromFoldable value)