@@ -186,24 +186,31 @@ o_1_space_serial_parse value =
186 , benchIOSink value "split (all,any)" $ splitAllAny value
186 , benchIOSink value "split (all,any)" $ splitAllAny value
187 , benchIOSink value "many" many
187 , benchIOSink value "many" many
188 , benchIOSink value "some" some
188 , benchIOSink value "some" some
189− , benchIOSink value "choice/100" $ choice (value `div` 100)
190 , benchIOSink value "tee (all,any)" $ teeAllAny value
189 , benchIOSink value "tee (all,any)" $ teeAllAny value
191 , benchIOSink value "teeFst (all,any)" $ teeFstAllAny value
190 , benchIOSink value "teeFst (all,any)" $ teeFstAllAny value
192 , benchIOSink value "shortest (all,any)" $ shortestAllAny value
191 , benchIOSink value "shortest (all,any)" $ shortestAllAny value
193 , benchIOSink value "longest (all,any)" $ longestAllAny value
192 , benchIOSink value "longest (all,any)" $ longestAllAny value
194− , benchIOSink value "sequenceA/100" $ sequenceA (value `div` 100)
195− , benchIOSink value "sequenceA_/100" $ sequenceA_ (value `div` 100)
196− , benchIOSink value "sequence/100" $ sequence (value `div` 100)
199−o_1_heap_serial_parse :: Int -> [Benchmark]
195+-- These show non-linear time complexity
200−o_1_heap_serial_parse value =
196+-- Increase in rss is 20-40% on doubling the stream size
197+o_n_heap_serial_parse :: Int -> [Benchmark]
198+o_n_heap_serial_parse value =
201 [ benchIOSink value "lookAhead" $ lookAhead value
199 [ benchIOSink value "lookAhead" $ lookAhead value
202 , benchIOSink value "manyAlt" manyAlt
200 , benchIOSink value "manyAlt" manyAlt
203 , benchIOSink value "someAlt" someAlt
201 , benchIOSink value "someAlt" someAlt
204 , benchIOSink value "manyTill" $ manyTill value
202 , benchIOSink value "manyTill" $ manyTill value
205+-- accumulate results in a list in IO
206+o_n_space_serial_parse :: Int -> [Benchmark]
207+o_n_space_serial_parse value =
208+ [ benchIOSink value "sequenceA/100" $ sequenceA (value `div` 100)
209+ , benchIOSink value "sequenceA_/100" $ sequenceA_ (value `div` 100)
210+ , benchIOSink value "sequence/100" $ sequence (value `div` 100)
211+ , benchIOSink value "choice/100" $ choice (value `div` 100)
207-------------------------------------------------------------------------------
214-------------------------------------------------------------------------------
209-------------------------------------------------------------------------------
216-------------------------------------------------------------------------------
@@ -225,7 +232,13 @@ main = do
225 , bgroup "o-n-heap"
232 , bgroup "o-n-heap"
226 [ bgroup "parser" $ concat
233 [ bgroup "parser" $ concat
228− o_1_heap_serial_parse value
235+ o_n_heap_serial_parse value
238+ , bgroup "o-n-space"
239+ [ bgroup "parser" $ concat
241+ o_n_space_serial_parse value