@@ -306,6 +306,27 @@ split_ value =
306 (PR.dropWhile (<= value))
306 (PR.dropWhile (<= value))
311+ => Int -> Stream m Int -> m (Either ParseError ())
315+ (PR.dropWhile (<= (value `div` 2)) *> PR.die "alt")
316+ (PR.dropWhile (<= value))
319+{-# INLINE altSmall #-}
321+ => Int -> Stream m Int -> m ()
323+ Stream.fold Fold.drain .
326+ (PR.satisfy (>= value) *> PR.die "alt")
327+ (PR.satisfy (<= value))
309{-# INLINE takeEndBy_ #-}
330{-# INLINE takeEndBy_ #-}
310takeEndBy_ :: Monad m
331takeEndBy_ :: Monad m
311 => Int -> Stream m Int -> m (Either ParseError ())
332 => Int -> Stream m Int -> m (Either ParseError ())
@@ -513,6 +534,8 @@ o_n_heap_serial value =
514 -- non-linear time complexity (parserD)
535 -- non-linear time complexity (parserD)
515 , benchIOSink value "split_" $ split_ value
536 , benchIOSink value "split_" $ split_ value
537+ , benchIOSink value "altSmall (2 x parseMany)" $ altSmall value
538+ , benchIOSink value "altBig (1/2 x 2)" $ alt value
516 -- XXX why O(n) heap?
539 -- XXX why O(n) heap?
517 -- , benchIOSink value "choice" $ choice value
540 -- , benchIOSink value "choice" $ choice value