@@ -186,24 +186,31 @@ o_1_space_serial_parse value =
186186 , benchIOSink value "split (all,any)" $ splitAllAny value
187187 , benchIOSink value "many" many
188188 , benchIOSink value "some" some
189− , benchIOSink value "choice/100" $ choice (value `div` 100)
190189 , benchIOSink value "tee (all,any)" $ teeAllAny value
191190 , benchIOSink value "teeFst (all,any)" $ teeFstAllAny value
192191 , benchIOSink value "shortest (all,any)" $ shortestAllAny value
193192 , 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)
197193 ]
198194
199−o_1_heap_serial_parse :: Int -> [Benchmark]
200−o_1_heap_serial_parse value =
195+-- These show non-linear time complexity
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 =
201199 [ benchIOSink value "lookAhead" $ lookAhead value
202200 , benchIOSink value "manyAlt" manyAlt
203201 , benchIOSink value "someAlt" someAlt
204202 , benchIOSink value "manyTill" $ manyTill value
205203 ]
206204
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)
212+ ]
213+
207214-------------------------------------------------------------------------------
208215-- Driver
209216-------------------------------------------------------------------------------
@@ -225,7 +232,13 @@ main = do
225232 , bgroup "o-n-heap"
226233 [ bgroup "parser" $ concat
227234 [
228− o_1_heap_serial_parse value
235+ o_n_heap_serial_parse value
236+ ]
237+ ]
238+ , bgroup "o-n-space"
239+ [ bgroup "parser" $ concat
240+ [
241+ o_n_space_serial_parse value
229242 ]
230243 ]
231244 ]