on master help sign in
Add informative comments wrt the unfold benchmarks
commit2d4ab16dd84d43c8ba9c722837922871ad7d4937 authoradithyaov <adithya@composewell.com> dateMon 19 Oct 2020, 07:57 (6 years ago) parent5d4918c
1 file changed+20−15
benchmark/Streamly/Benchmark/Data/Unfold.hs+20−15
benchmark/Streamly/Benchmark/Data/Unfold.hs+20−15
@@ -134,13 +134,18 @@ fromStream :: Int -> Int -> IO ()
134134fromStream size start =
135135 drainGeneration UF.fromStream (S.replicate size start :: S.SerialT IO Int)
136136
137+-- XXX INVESTIGATE: Although the performance of this should be equivalant to
138+-- fromStream, this is considerably worse. More than 4x worse.
137139{-# INLINE fromStreamK #-}
138140fromStreamK :: Monad m => Int -> Int -> m ()
139141fromStreamK size start = drainGeneration UF.fromStreamK (K.replicate size start)
140142
141−{-# INLINE fromStreamD #-}
142−fromStreamD :: Monad m => Int -> Int -> m ()
143−fromStreamD size start = drainGeneration UF.fromStreamD (D.replicate size start)
143+-- XXX INVESTIGATE: This either takes too long or is in an infinite loop, either
144+-- way see whats going on.
145+{-# INLINE _fromStreamD #-}
146+_fromStreamD :: Monad m => Int -> Int -> m ()
147+_fromStreamD size start =
148+ drainGeneration UF.fromStreamD (D.replicate size start)
144149
145150{-# INLINE _nilM #-}
146151_nilM :: Monad m => Int -> Int -> m ()
@@ -209,16 +214,6 @@ replicateM size start = drainGeneration (UF.replicateM size) (return start)
209214repeatM :: Monad m => Int -> Int -> m ()
210215repeatM size start = drainGeneration (UF.take size UF.repeatM) (return start)
211216
212−{-# INLINE enumerateFromStepIntegral #-}
213−enumerateFromStepIntegral :: Monad m => Int -> Int -> m ()
214−enumerateFromStepIntegral size start =
215− drainGeneration (UF.take size UF.enumerateFromStepIntegral) (start, 1)
216−
217−{-# INLINE enumerateFromToIntegral #-}
218−enumerateFromToIntegral :: Monad m => Int -> Int -> m ()
219−enumerateFromToIntegral size start =
220− drainGeneration (UF.enumerateFromToIntegral (size + start)) start
221−
222217{-# INLINE iterateM #-}
223218iterateM :: Monad m => Int -> Int -> m ()
224219iterateM size start =
@@ -229,6 +224,16 @@ fromIndicesM :: Monad m => Int -> Int -> m ()
229224fromIndicesM size start =
230225 drainGeneration (UF.take size (UF.fromIndicesM return)) start
231226
227+{-# INLINE enumerateFromStepIntegral #-}
228+enumerateFromStepIntegral :: Monad m => Int -> Int -> m ()
229+enumerateFromStepIntegral size start =
230+ drainGeneration (UF.take size UF.enumerateFromStepIntegral) (start, 1)
231+
232+{-# INLINE enumerateFromToIntegral #-}
233+enumerateFromToIntegral :: Monad m => Int -> Int -> m ()
234+enumerateFromToIntegral size start =
235+ drainGeneration (UF.enumerateFromToIntegral (size + start)) start
236+
232237{-# INLINE enumerateFromIntegral #-}
233238enumerateFromIntegral :: Monad m => Int -> Int -> m ()
234239enumerateFromIntegral size start =
@@ -285,7 +290,6 @@ filter :: Monad m => Int -> Int -> m ()
285290filter size start =
286291 drainTransformationDefault size (UF.filter (\_ -> True)) start
287292
288−
289293{-# INLINE filterM #-}
290294filterM :: Monad m => Int -> Int -> m ()
291295filterM size start =
@@ -422,7 +426,8 @@ o_1_space_generation_resource size =
422426 "generation/resource"
423427 [ benchIO "fromStream" $ fromStream size
424428 , benchIO "fromStreamK" $ fromStreamK size
425− , benchIO "fromStreamD" $ fromStreamD size
429+ -- XXX INVESTIGATE, see the definition
430+ -- , benchIO "fromStreamD" $ fromStreamD size
426431 -- Very small benchmarks, reporting in ns
427432 -- , benchIO "nilM" $ nilM size
428433 , benchIO "consM" $ consM size