on master help sign in
Add enumarate combinators to the serial generation benchmark group
a06f8c4adithyaov
benchmark/Streamly/Benchmark/Prelude/Serial.hs+13−2
@@ -130,8 +130,15 @@ enumerateFromThen count inp = S.take count $ S.enumerateFromThen inp (inp + 1)
130enumerateFromThenTo :: (Monad m, S.IsStream t) => Int -> Int -> t m Int
130enumerateFromThenTo :: (Monad m, S.IsStream t) => Int -> Int -> t m Int
131enumerateFromThenTo = sourceIntFromThenTo
131enumerateFromThenTo = sourceIntFromThenTo
132
132
133−-- XXX enumerate?
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 #-}
134−-- XXX enumerateTo?
140+enumerateTo :: (Monad m, S.IsStream t) => Int -> Int -> t m Int
141+enumerateTo count n = S.enumerateFrom (minBound + count + n)
135
142
136{-# INLINE iterate #-}
143{-# INLINE iterate #-}
137iterate :: (Monad m, S.IsStream t) => Int -> Int -> t m Int
144iterate :: (Monad m, S.IsStream t) => Int -> Int -> t m Int
@@ -171,6 +178,10 @@ o_1_space_generation value =
171 , benchPureSrc "IsList.fromList" (sourceIsList value)
178 , benchPureSrc "IsList.fromList" (sourceIsList value)
172 , benchPureSrc "IsString.fromString" (sourceIsString value)
179 , benchPureSrc "IsString.fromString" (sourceIsString value)
173 , benchIOSrc serially "fromListM" (sourceFromListM value)
180 , 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)
174
185
175 -- These essentially test cons and consM
186 -- These essentially test cons and consM
176 , benchIOSrc serially "fromFoldable" (sourceFromFoldable value)
187 , benchIOSrc serially "fromFoldable" (sourceFromFoldable value)