packages feed

binary-parsers 0.2.1.0 → 0.2.2.0

raw patch · 8 files changed

+388/−350 lines, 8 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Data.Binary.Parser: infix 0 <?>

Files

ChangeLog.md view
@@ -1,5 +1,10 @@ # Revision history for binary-parsec +## 0.2.2.0  -- 2016-09-21++* Minor optimization to 'takeTill', 'takeWhile' and 'signed'.+* Add documents on backtracking.+ ## 0.2.1.0  -- 2016-09-21  * Add `parse`,`parseDetail`, `parseDetailLazy`.
Data/Binary/Parser.hs view
@@ -11,7 +11,7 @@ -- This library provide parsec\/attoparsec style parsing combinators for -- <http://hackage.haskell.org/package/binary binary> -- package. By default, this module export combinators in "Data.Binary.Get",--- "Data.Binary.Parser.Word8" and "Data.Binary.Numeric", for additional ASCII char parser,+-- "Data.Binary.Parser.Word8" and "Data.Binary.Parser.Numeric", for additional ASCII char parser, -- please check "Data.Binary.Parser.Char8" module. -- -- The behaviour of parsers here is different to that of the@@ -43,6 +43,30 @@ -- functions are faster than binary's counter part by avoiding a small constant overhead. -- Check 'parse' for detail. --+-- = A few words on performance and backtracking+--+-- There's a common belief that parsers which support backtracking are slow, but it's not neccessarily+-- true in binary, because binary doesn't do book keeping if you doesn't use '<|>', 'lookAhead' or their+-- friends. Combinators in this library like 'peek', 'string'... also try to avoid backtracking so+-- it's faster to use them rather than do backtracking yourself, for example, 'peek' is faster than+-- @'lookAhead' 'getWord8'@. In practice, protocols are often designed to avoid backtracking.+-- For example, if you have following parser:+--+-- >branch1 <|> branch2 <|> (skipN 1 >> branch3)+--+-- And if you can select the right branch just by looking ahead one byte, then you can rewrite it to:+--+-- @+-- w <- peek+-- if  | w == b1 -> branch1+--     | w == b2 -> branch2+--     | w == b3 -> skipN 1 >> branch3+-- @+--+-- Binary performs as fast as a non-backtracking parser as long as you construct your parser+-- without using backtracking. And sometime backtracking is indeed neccessary, for example 'scientifically'+-- is almost impossible to implement correctly if you don't do backtracking.+-- module Data.Binary.Parser     (     -- * Running parsers@@ -202,7 +226,8 @@ endOfInput :: Get () endOfInput = do     e <- isEmpty-    unless e (fail "endOfInput: not meet end yet")+    unless e (fail "endOfInput")+{-# INLINE endOfInput #-}  -- | @option x p@ tries to apply action @p@. If @p@ fails without -- consuming input, it returns the value @x@, otherwise the value@@ -225,6 +250,7 @@     pos1 <- bytesRead     (x, pos2) <- lookAhead $ (,) <$> p <*> bytesRead     (,) <$> (getByteString . fromIntegral) (pos2 - pos1) <*> pure x+{-# INLINE match #-}  -- | A version of 'liftM2' that is strict in the result of its first -- action.
Data/Binary/Parser/Char8.hs view
@@ -120,7 +120,7 @@     bs' <- B.unsafeTake l <$> get     if B.map toLower bs' == B.map toLower bs     then put (B.unsafeDrop l bs') >> return bs'-    else fail ("string not match: " ++ show bs)+    else fail "stringCI"   where     toLower w | w >= 65 && w <= 90 = w + 32               | otherwise          = w
Data/Binary/Parser/Numeric.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE CPP          #-}+{-# LANGUAGE MultiWayIf   #-} -- | -- Module      :  Data.Binary.Parser.Numeric -- Copyright   :  Bryan O'Sullivan 2007-2015, Winterland 2016@@ -40,7 +41,7 @@     bs <- W.takeWhile1 W.isHexDigit     case LexInt.readHexadecimal bs of         Just (x, _) -> return x-        Nothing -> fail "decimal: impossible"+        Nothing -> fail "hexadecimal: impossible" {-# SPECIALISE hexadecimal :: Get Int #-} {-# SPECIALISE hexadecimal :: Get Int8 #-} {-# SPECIALISE hexadecimal :: Get Int16 #-}@@ -58,7 +59,7 @@ decimal :: Integral a => Get a decimal = do     bs <- W.takeWhile1 W.isDigit-    return (LexInt.readDecimal_ bs)+    return $! LexInt.readDecimal_ bs {-# SPECIALISE decimal :: Get Int #-} {-# SPECIALISE decimal :: Get Int8 #-} {-# SPECIALISE decimal :: Get Int16 #-}@@ -75,7 +76,11 @@ -- character. -- signed :: Num a => Get a -> Get a-signed p = p <|> (negate <$> (W.word8 MINUS *> p)) <|> (W.word8 PLUS *> p)+signed p = do+    w <- W.peek+    if  | w == MINUS -> W.skipN 1 >> negate <$> p+        | w == PLUS  -> W.skipN 1 >> p+        | otherwise  -> p {-# SPECIALISE signed :: Get Int -> Get Int #-} {-# SPECIALISE signed :: Get Int8 -> Get Int8 #-} {-# SPECIALISE signed :: Get Int16 -> Get Int16 #-}@@ -109,23 +114,20 @@ -- the 'read' function, with the exception that a trailing @\'.\'@ or -- @\'e\'@ /not/ followed by a number is not consumed. ----- Examples with behaviour identical to 'read', if you feed an empty--- continuation to the first result:------ >runGetOrFail double "3"     == Right ("",1,3.0)--- >runGetOrFail double "3.1"   == Right ("",3,3.1)--- >runGetOrFail double "3e4"   == Right ("",3,30000.0)--- >runGetOrFail double "3.1e4" == Right ("",5,31000.0)--- -- Examples with behaviour identical to 'read': ----- >runGetOrFail double ".3"    == Left (".3",0,"takeWhile1")--- >runGetOrFail double "e3"    == Left ("e3",0,"takeWhile1")+-- >parseOnly double "3"     == Right ("",1,3.0)+-- >parseOnly double "3.1"   == Right ("",3,3.1)+-- >parseOnly double "3e4"   == Right ("",3,30000.0)+-- >parseOnly double "3.1e4" == Right ("",5,31000.0) --+-- >parseOnly double ".3"    == Left (".3",0,"takeWhile1")+-- >parseOnly double "e3"    == Left ("e3",0,"takeWhile1")+-- -- Examples of differences from 'read': ----- >runGetOrFail double "3.foo" == Right (".foo",1,3.0)--- >runGetOrFail double "3e"    == Right ("e",1,3.0)+-- >parseOnly double "3.foo" == Right (".foo",1,3.0)+-- >parseOnly double "3e"    == Right ("e",1,3.0) -- -- This function does not accept string representations of \"NaN\" or -- \"Infinity\".
Data/Binary/Parser/Word8.hs view
@@ -73,7 +73,7 @@     bs <- get     let w = B.unsafeHead bs     if p w then put (B.unsafeTail bs) >> return w-              else fail "satisfy"+           else fail "satisfy" {-# INLINE satisfy #-}  -- | The parser @satisfyWith f p@ transforms a byte, and succeeds if@@ -138,19 +138,18 @@     bs <- get     let (want, rest) = B.break p bs     put rest-    if B.null rest then B.concat . reverse <$> go [want]-                   else return want+    if B.null rest then B.concat . reverse <$> go [want] else return want   where     go acc = do-        bs <- get-        let (want, rest) = B.break p bs-            acc' = want : acc-        put rest-        if B.null rest-        then do-            e <- isEmpty -- isEmpty will draw input here-            if e then return acc' else go acc'-        else return acc'+        e <- isEmpty -- isEmpty will draw input here+        if e+        then return acc+        else do+            bs <- get+            let (want, rest) = B.break p bs+                acc' = want : acc+            put rest+            if B.null rest then go acc' else return acc' {-# INLINE takeTill #-}  -- | Consume input as long as the predicate returns 'True' or reach the end of input,@@ -161,19 +160,18 @@     bs <- get     let (want, rest) = B.span p bs     put rest-    if B.null rest then B.concat . reverse <$> go [want]-                   else return want+    if B.null rest then B.concat . reverse <$> go [want] else return want   where     go acc = do-        bs <- get-        let (want, rest) = B.span p bs-            acc' = want : acc-        put rest-        if B.null rest-        then do-            e <- isEmpty-            if e then return acc' else go acc'-        else return acc'+        e <- isEmpty+        if e+        then return acc+        else do+            bs <- get+            let (want, rest) = B.span p bs+                acc' = want : acc+            put rest+            if B.null rest then go acc' else return acc' {-# INLINE takeWhile #-}  -- | Similar to 'takeWhile', but requires the predicate to succeed on at least one byte@@ -313,3 +311,4 @@         10 -> return ()         13 -> word8 10         _  -> fail "endOfLine"+{-# INLINE endOfLine #-}
README.md view
@@ -34,453 +34,451 @@ ``` start benchmark http request parser benchmarking http-req/attoparsec-time                 2.234 μs   (2.216 μs .. 2.252 μs)-                     0.999 R²   (0.999 R² .. 1.000 R²)-mean                 2.243 μs   (2.227 μs .. 2.261 μs)-std dev              58.33 ns   (45.77 ns .. 81.74 ns)-variance introduced by outliers: 32% (moderately inflated)+time                 2.339 μs   (2.321 μs .. 2.358 μs)+                     0.999 R²   (0.998 R² .. 1.000 R²)+mean                 2.332 μs   (2.307 μs .. 2.365 μs)+std dev              93.73 ns   (65.36 ns .. 147.2 ns)+variance introduced by outliers: 54% (severely inflated)  benchmarking http-req/binary-parsers-time                 1.355 μs   (1.344 μs .. 1.368 μs)-                     0.999 R²   (0.999 R² .. 1.000 R²)-mean                 1.367 μs   (1.354 μs .. 1.379 μs)-std dev              42.42 ns   (34.69 ns .. 54.51 ns)-variance introduced by outliers: 42% (moderately inflated)+time                 1.387 μs   (1.373 μs .. 1.400 μs)+                     0.999 R²   (0.998 R² .. 0.999 R²)+mean                 1.393 μs   (1.378 μs .. 1.412 μs)+std dev              56.09 ns   (43.06 ns .. 77.02 ns)+variance introduced by outliers: 55% (severely inflated)  benchmarking http-req/scanner-time                 1.440 μs   (1.346 μs .. 1.652 μs)-                     0.928 R²   (0.848 R² .. 0.999 R²)-mean                 1.392 μs   (1.345 μs .. 1.528 μs)-std dev              268.6 ns   (40.18 ns .. 516.8 ns)-variance introduced by outliers: 97% (severely inflated)+time                 1.553 μs   (1.407 μs .. 1.817 μs)+                     0.923 R²   (0.873 R² .. 0.999 R²)+mean                 1.457 μs   (1.416 μs .. 1.647 μs)+std dev              232.3 ns   (41.02 ns .. 518.5 ns)+variance introduced by outliers: 95% (severely inflated)  benchmarking http-req/warp-time                 921.0 ns   (913.2 ns .. 928.5 ns)-                     0.999 R²   (0.999 R² .. 1.000 R²)-mean                 923.5 ns   (916.3 ns .. 931.3 ns)-std dev              25.51 ns   (21.12 ns .. 31.75 ns)-variance introduced by outliers: 38% (moderately inflated)+time                 939.2 ns   (929.0 ns .. 950.5 ns)+                     0.999 R²   (0.997 R² .. 0.999 R²)+mean                 955.2 ns   (943.9 ns .. 973.0 ns)+std dev              48.11 ns   (36.60 ns .. 62.44 ns)+variance introduced by outliers: 67% (severely inflated)  start benchmark JSON parser benchmarking attoparsec/buffer-builder-time                 4.152 ms   (4.088 ms .. 4.201 ms)-                     0.999 R²   (0.998 R² .. 0.999 R²)-mean                 4.256 ms   (4.221 ms .. 4.302 ms)-std dev              128.6 μs   (97.90 μs .. 190.0 μs)-variance introduced by outliers: 13% (moderately inflated)+time                 4.306 ms   (4.222 ms .. 4.382 ms)+                     0.998 R²   (0.997 R² .. 0.999 R²)+mean                 4.334 ms   (4.286 ms .. 4.382 ms)+std dev              143.9 μs   (117.8 μs .. 184.0 μs)+variance introduced by outliers: 15% (moderately inflated)  benchmarking binary-parser/buffer-builder-time                 3.768 ms   (3.663 ms .. 3.910 ms)-                     0.993 R²   (0.986 R² .. 0.998 R²)-mean                 3.815 ms   (3.765 ms .. 3.877 ms)-std dev              175.5 μs   (140.6 μs .. 253.8 μs)-variance introduced by outliers: 27% (moderately inflated)+time                 3.751 ms   (3.678 ms .. 3.830 ms)+                     0.997 R²   (0.995 R² .. 0.999 R²)+mean                 3.802 ms   (3.770 ms .. 3.845 ms)+std dev              120.5 μs   (97.00 μs .. 153.3 μs)+variance introduced by outliers: 14% (moderately inflated)  benchmarking attoparsec/lazy-bytestring/buffer-builder-time                 4.117 ms   (4.037 ms .. 4.186 ms)-                     0.997 R²   (0.994 R² .. 0.999 R²)-mean                 4.328 ms   (4.151 ms .. 5.153 ms)-std dev              1.013 ms   (102.4 μs .. 2.296 ms)-variance introduced by outliers: 90% (severely inflated)+time                 4.407 ms   (4.324 ms .. 4.473 ms)+                     0.998 R²   (0.997 R² .. 0.999 R²)+mean                 4.386 ms   (4.349 ms .. 4.425 ms)+std dev              123.3 μs   (102.2 μs .. 156.8 μs)+variance introduced by outliers: 11% (moderately inflated)  benchmarking binary-parser/lazy-bytestring/buffer-builder-time                 4.146 ms   (3.765 ms .. 4.911 ms)-                     0.763 R²   (0.649 R² .. 0.975 R²)-mean                 4.158 ms   (3.859 ms .. 4.783 ms)-std dev              1.300 ms   (791.0 μs .. 1.930 ms)-variance introduced by outliers: 95% (severely inflated)+time                 3.686 ms   (3.631 ms .. 3.734 ms)+                     0.998 R²   (0.998 R² .. 0.999 R²)+mean                 3.705 ms   (3.676 ms .. 3.736 ms)+std dev              99.87 μs   (84.11 μs .. 122.9 μs)+variance introduced by outliers: 12% (moderately inflated)  benchmarking attoparsec/dates-fract-time                 3.990 μs   (3.934 μs .. 4.064 μs)-                     0.958 R²   (0.869 R² .. 0.998 R²)-mean                 4.678 μs   (4.105 μs .. 6.598 μs)-std dev              3.240 μs   (890.6 ns .. 6.569 μs)-variance introduced by outliers: 99% (severely inflated)+time                 4.391 μs   (4.211 μs .. 4.727 μs)+                     0.939 R²   (0.847 R² .. 0.999 R²)+mean                 4.420 μs   (4.225 μs .. 5.433 μs)+std dev              1.113 μs   (162.8 ns .. 2.656 μs)+variance introduced by outliers: 98% (severely inflated)  benchmarking binary-parser/dates-fract-time                 3.073 μs   (2.993 μs .. 3.168 μs)-                     0.993 R²   (0.987 R² .. 0.999 R²)-mean                 3.130 μs   (3.030 μs .. 3.534 μs)-std dev              582.4 ns   (196.7 ns .. 1.256 μs)-variance introduced by outliers: 97% (severely inflated)+time                 3.180 μs   (3.161 μs .. 3.198 μs)+                     0.999 R²   (0.999 R² .. 1.000 R²)+mean                 3.180 μs   (3.159 μs .. 3.207 μs)+std dev              81.49 ns   (69.06 ns .. 97.57 ns)+variance introduced by outliers: 31% (moderately inflated)  benchmarking attoparsec/lazy-bytestring/dates-fract-time                 4.162 μs   (4.079 μs .. 4.301 μs)-                     0.936 R²   (0.818 R² .. 0.998 R²)-mean                 4.485 μs   (4.118 μs .. 5.618 μs)-std dev              2.185 μs   (241.3 ns .. 4.168 μs)-variance introduced by outliers: 99% (severely inflated)+time                 4.283 μs   (4.224 μs .. 4.344 μs)+                     0.999 R²   (0.998 R² .. 0.999 R²)+mean                 4.240 μs   (4.196 μs .. 4.283 μs)+std dev              149.1 ns   (122.7 ns .. 178.2 ns)+variance introduced by outliers: 45% (moderately inflated)  benchmarking binary-parser/lazy-bytestring/dates-fract-time                 3.038 μs   (3.017 μs .. 3.061 μs)-                     0.999 R²   (0.999 R² .. 1.000 R²)-mean                 3.042 μs   (3.017 μs .. 3.067 μs)-std dev              86.40 ns   (72.15 ns .. 110.5 ns)-variance introduced by outliers: 36% (moderately inflated)+time                 3.241 μs   (3.207 μs .. 3.273 μs)+                     0.999 R²   (0.997 R² .. 0.999 R²)+mean                 3.247 μs   (3.218 μs .. 3.301 μs)+std dev              128.4 ns   (94.42 ns .. 199.9 ns)+variance introduced by outliers: 52% (severely inflated)  benchmarking attoparsec/dates-time                 3.890 μs   (3.852 μs .. 3.927 μs)-                     0.999 R²   (0.999 R² .. 0.999 R²)-mean                 3.911 μs   (3.869 μs .. 3.955 μs)-std dev              147.6 ns   (125.4 ns .. 185.8 ns)-variance introduced by outliers: 49% (moderately inflated)+time                 4.000 μs   (3.967 μs .. 4.033 μs)+                     0.999 R²   (0.999 R² .. 1.000 R²)+mean                 4.025 μs   (3.987 μs .. 4.075 μs)+std dev              141.9 ns   (109.4 ns .. 221.2 ns)+variance introduced by outliers: 45% (moderately inflated)  benchmarking binary-parser/dates-time                 2.962 μs   (2.930 μs .. 2.993 μs)-                     0.999 R²   (0.999 R² .. 0.999 R²)-mean                 2.971 μs   (2.940 μs .. 3.007 μs)-std dev              115.6 ns   (92.31 ns .. 143.5 ns)-variance introduced by outliers: 51% (severely inflated)+time                 3.049 μs   (3.021 μs .. 3.077 μs)+                     0.996 R²   (0.988 R² .. 0.999 R²)+mean                 3.132 μs   (3.049 μs .. 3.379 μs)+std dev              477.9 ns   (103.8 ns .. 910.2 ns)+variance introduced by outliers: 94% (severely inflated)  benchmarking attoparsec/lazy-bytestring/dates-time                 3.950 μs   (3.891 μs .. 4.010 μs)-                     0.998 R²   (0.997 R² .. 0.999 R²)-mean                 3.954 μs   (3.905 μs .. 4.009 μs)-std dev              171.8 ns   (145.4 ns .. 203.0 ns)-variance introduced by outliers: 56% (severely inflated)+time                 4.096 μs   (4.020 μs .. 4.243 μs)+                     0.930 R²   (0.807 R² .. 0.999 R²)+mean                 4.490 μs   (4.116 μs .. 5.966 μs)+std dev              2.110 μs   (240.5 ns .. 4.653 μs)+variance introduced by outliers: 99% (severely inflated)  benchmarking binary-parser/lazy-bytestring/dates-time                 2.961 μs   (2.935 μs .. 2.987 μs)-                     0.999 R²   (0.999 R² .. 1.000 R²)-mean                 2.960 μs   (2.936 μs .. 2.993 μs)-std dev              93.80 ns   (72.84 ns .. 145.9 ns)-variance introduced by outliers: 41% (moderately inflated)+time                 3.136 μs   (3.110 μs .. 3.157 μs)+                     0.999 R²   (0.999 R² .. 0.999 R²)+mean                 3.132 μs   (3.103 μs .. 3.180 μs)+std dev              126.2 ns   (93.20 ns .. 177.0 ns)+variance introduced by outliers: 53% (severely inflated)  benchmarking attoparsec/example-time                 74.67 μs   (73.57 μs .. 75.75 μs)-                     0.998 R²   (0.998 R² .. 0.999 R²)-mean                 74.86 μs   (74.11 μs .. 75.73 μs)-std dev              2.666 μs   (2.239 μs .. 3.379 μs)-variance introduced by outliers: 37% (moderately inflated)+time                 76.28 μs   (75.38 μs .. 77.20 μs)+                     0.999 R²   (0.998 R² .. 0.999 R²)+mean                 75.69 μs   (74.99 μs .. 76.51 μs)+std dev              2.453 μs   (2.093 μs .. 3.071 μs)+variance introduced by outliers: 32% (moderately inflated)  benchmarking binary-parser/example-time                 57.40 μs   (56.92 μs .. 57.90 μs)-                     0.999 R²   (0.999 R² .. 1.000 R²)-mean                 57.63 μs   (57.19 μs .. 58.12 μs)-std dev              1.585 μs   (1.240 μs .. 2.004 μs)-variance introduced by outliers: 26% (moderately inflated)+time                 59.48 μs   (58.77 μs .. 60.25 μs)+                     0.998 R²   (0.997 R² .. 0.999 R²)+mean                 60.26 μs   (59.42 μs .. 61.33 μs)+std dev              3.214 μs   (2.459 μs .. 4.060 μs)+variance introduced by outliers: 58% (severely inflated)  benchmarking attoparsec/lazy-bytestring/example-time                 78.02 μs   (77.31 μs .. 78.81 μs)+time                 78.84 μs   (77.75 μs .. 80.17 μs)                      0.999 R²   (0.998 R² .. 0.999 R²)-mean                 78.12 μs   (77.35 μs .. 78.97 μs)-std dev              2.733 μs   (2.141 μs .. 3.506 μs)+mean                 78.02 μs   (77.28 μs .. 78.89 μs)+std dev              2.683 μs   (2.172 μs .. 3.398 μs) variance introduced by outliers: 35% (moderately inflated)  benchmarking binary-parser/lazy-bytestring/example-time                 62.15 μs   (57.00 μs .. 72.25 μs)-                     0.931 R²   (0.874 R² .. 0.999 R²)-mean                 58.85 μs   (57.24 μs .. 63.61 μs)-std dev              8.903 μs   (2.232 μs .. 18.31 μs)-variance introduced by outliers: 92% (severely inflated)+time                 59.20 μs   (58.64 μs .. 59.79 μs)+                     0.999 R²   (0.997 R² .. 0.999 R²)+mean                 59.23 μs   (58.52 μs .. 60.08 μs)+std dev              2.558 μs   (1.963 μs .. 3.353 μs)+variance introduced by outliers: 47% (moderately inflated)  benchmarking attoparsec/geometry-time                 3.216 ms   (3.166 ms .. 3.266 ms)-                     0.995 R²   (0.986 R² .. 0.999 R²)-mean                 3.293 ms   (3.235 ms .. 3.410 ms)-std dev              258.3 μs   (113.4 μs .. 481.1 μs)-variance introduced by outliers: 53% (severely inflated)+time                 3.366 ms   (3.323 ms .. 3.416 ms)+                     0.999 R²   (0.998 R² .. 0.999 R²)+mean                 3.427 ms   (3.398 ms .. 3.466 ms)+std dev              107.4 μs   (80.60 μs .. 162.5 μs)+variance introduced by outliers: 16% (moderately inflated)  benchmarking binary-parser/geometry-time                 2.466 ms   (2.418 ms .. 2.523 ms)-                     0.996 R²   (0.994 R² .. 0.998 R²)-mean                 2.527 ms   (2.498 ms .. 2.567 ms)-std dev              114.9 μs   (92.96 μs .. 146.6 μs)-variance introduced by outliers: 29% (moderately inflated)+time                 2.604 ms   (2.572 ms .. 2.635 ms)+                     0.999 R²   (0.998 R² .. 0.999 R²)+mean                 2.619 ms   (2.595 ms .. 2.645 ms)+std dev              79.33 μs   (63.44 μs .. 102.1 μs)+variance introduced by outliers: 15% (moderately inflated)  benchmarking attoparsec/lazy-bytestring/geometry-time                 3.296 ms   (3.240 ms .. 3.357 ms)+time                 3.492 ms   (3.420 ms .. 3.565 ms)                      0.998 R²   (0.997 R² .. 0.999 R²)-mean                 3.282 ms   (3.252 ms .. 3.310 ms)-std dev              94.60 μs   (78.03 μs .. 117.8 μs)-variance introduced by outliers: 14% (moderately inflated)+mean                 3.440 ms   (3.411 ms .. 3.468 ms)+std dev              96.20 μs   (82.36 μs .. 114.1 μs)+variance introduced by outliers: 12% (moderately inflated)  benchmarking binary-parser/lazy-bytestring/geometry-time                 2.462 ms   (2.424 ms .. 2.500 ms)-                     0.998 R²   (0.996 R² .. 0.999 R²)-mean                 2.454 ms   (2.431 ms .. 2.483 ms)-std dev              90.13 μs   (74.45 μs .. 119.6 μs)-variance introduced by outliers: 22% (moderately inflated)+time                 2.670 ms   (2.633 ms .. 2.698 ms)+                     0.999 R²   (0.998 R² .. 0.999 R²)+mean                 2.647 ms   (2.623 ms .. 2.674 ms)+std dev              84.02 μs   (68.69 μs .. 104.0 μs)+variance introduced by outliers: 16% (moderately inflated)  benchmarking attoparsec/integers-time                 303.8 μs   (301.0 μs .. 306.8 μs)+time                 304.8 μs   (301.6 μs .. 308.5 μs)                      0.999 R²   (0.998 R² .. 0.999 R²)-mean                 304.3 μs   (301.6 μs .. 307.0 μs)-std dev              8.985 μs   (7.176 μs .. 11.49 μs)-variance introduced by outliers: 23% (moderately inflated)+mean                 306.9 μs   (304.2 μs .. 311.4 μs)+std dev              11.48 μs   (8.233 μs .. 19.62 μs)+variance introduced by outliers: 33% (moderately inflated)  benchmarking binary-parser/integers-time                 222.4 μs   (206.7 μs .. 245.6 μs)-                     0.956 R²   (0.907 R² .. 0.998 R²)-mean                 210.2 μs   (205.4 μs .. 226.7 μs)-std dev              26.99 μs   (8.189 μs .. 54.58 μs)-variance introduced by outliers: 86% (severely inflated)+time                 212.2 μs   (200.8 μs .. 235.2 μs)+                     0.971 R²   (0.940 R² .. 0.999 R²)+mean                 206.9 μs   (203.5 μs .. 218.2 μs)+std dev              18.14 μs   (6.445 μs .. 39.25 μs)+variance introduced by outliers: 75% (severely inflated)  benchmarking attoparsec/lazy-bytestring/integers-time                 302.1 μs   (298.8 μs .. 305.5 μs)-                     0.999 R²   (0.999 R² .. 0.999 R²)-mean                 304.8 μs   (302.9 μs .. 307.2 μs)-std dev              7.239 μs   (5.903 μs .. 8.904 μs)-variance introduced by outliers: 16% (moderately inflated)+time                 311.6 μs   (308.6 μs .. 316.6 μs)+                     0.998 R²   (0.995 R² .. 0.999 R²)+mean                 311.2 μs   (307.7 μs .. 315.7 μs)+std dev              13.30 μs   (9.673 μs .. 17.54 μs)+variance introduced by outliers: 39% (moderately inflated)  benchmarking binary-parser/lazy-bytestring/integers-time                 206.4 μs   (203.0 μs .. 210.2 μs)-                     0.998 R²   (0.998 R² .. 0.999 R²)-mean                 204.7 μs   (203.1 μs .. 206.3 μs)-std dev              5.477 μs   (4.497 μs .. 6.974 μs)-variance introduced by outliers: 21% (moderately inflated)+time                 201.3 μs   (198.6 μs .. 203.8 μs)+                     0.999 R²   (0.998 R² .. 0.999 R²)+mean                 203.0 μs   (201.3 μs .. 204.8 μs)+std dev              5.859 μs   (4.853 μs .. 7.421 μs)+variance introduced by outliers: 24% (moderately inflated)  benchmarking attoparsec/jp10-time                 489.4 μs   (484.9 μs .. 495.0 μs)-                     0.999 R²   (0.998 R² .. 0.999 R²)-mean                 490.0 μs   (486.2 μs .. 494.0 μs)-std dev              13.70 μs   (10.93 μs .. 18.78 μs)-variance introduced by outliers: 20% (moderately inflated)+time                 500.6 μs   (489.3 μs .. 513.9 μs)+                     0.997 R²   (0.996 R² .. 0.998 R²)+mean                 498.7 μs   (493.5 μs .. 504.2 μs)+std dev              18.67 μs   (15.01 μs .. 23.11 μs)+variance introduced by outliers: 31% (moderately inflated)  benchmarking binary-parser/jp10-time                 458.2 μs   (455.1 μs .. 461.6 μs)+time                 467.6 μs   (462.5 μs .. 473.7 μs)                      0.999 R²   (0.998 R² .. 0.999 R²)-mean                 463.4 μs   (459.1 μs .. 468.5 μs)-std dev              15.32 μs   (12.59 μs .. 19.01 μs)+mean                 470.5 μs   (466.4 μs .. 475.8 μs)+std dev              15.54 μs   (12.46 μs .. 19.79 μs) variance introduced by outliers: 26% (moderately inflated)  benchmarking attoparsec/lazy-bytestring/jp10-time                 488.0 μs   (480.6 μs .. 493.8 μs)-                     0.999 R²   (0.998 R² .. 0.999 R²)-mean                 485.8 μs   (481.6 μs .. 490.0 μs)-std dev              14.50 μs   (11.70 μs .. 19.83 μs)-variance introduced by outliers: 22% (moderately inflated)+time                 491.5 μs   (485.0 μs .. 497.6 μs)+                     0.998 R²   (0.998 R² .. 0.999 R²)+mean                 493.7 μs   (488.3 μs .. 500.1 μs)+std dev              19.88 μs   (15.55 μs .. 29.45 μs)+variance introduced by outliers: 34% (moderately inflated)  benchmarking binary-parser/lazy-bytestring/jp10-time                 478.6 μs   (453.6 μs .. 535.7 μs)-                     0.932 R²   (0.837 R² .. 0.999 R²)-mean                 473.8 μs   (458.7 μs .. 527.8 μs)-std dev              84.24 μs   (12.21 μs .. 172.8 μs)-variance introduced by outliers: 91% (severely inflated)+time                 499.3 μs   (461.5 μs .. 590.2 μs)+                     0.856 R²   (0.723 R² .. 0.999 R²)+mean                 486.9 μs   (467.1 μs .. 565.2 μs)+std dev              120.4 μs   (12.86 μs .. 252.7 μs)+variance introduced by outliers: 96% (severely inflated)  benchmarking attoparsec/jp100-time                 2.961 ms   (2.913 ms .. 3.010 ms)+time                 3.023 ms   (2.989 ms .. 3.059 ms)                      0.998 R²   (0.997 R² .. 0.999 R²)-mean                 3.009 ms   (2.985 ms .. 3.035 ms)-std dev              78.61 μs   (67.01 μs .. 95.10 μs)-variance introduced by outliers: 11% (moderately inflated)+mean                 3.079 ms   (3.045 ms .. 3.120 ms)+std dev              122.8 μs   (88.92 μs .. 187.5 μs)+variance introduced by outliers: 23% (moderately inflated)  benchmarking binary-parser/jp100-time                 2.735 ms   (2.703 ms .. 2.771 ms)+time                 2.795 ms   (2.762 ms .. 2.828 ms)                      0.999 R²   (0.998 R² .. 0.999 R²)-mean                 2.731 ms   (2.707 ms .. 2.762 ms)-std dev              91.60 μs   (70.79 μs .. 137.6 μs)-variance introduced by outliers: 18% (moderately inflated)+mean                 2.790 ms   (2.765 ms .. 2.816 ms)+std dev              83.75 μs   (65.15 μs .. 108.6 μs)+variance introduced by outliers: 15% (moderately inflated)  benchmarking attoparsec/lazy-bytestring/jp100-time                 3.005 ms   (2.964 ms .. 3.051 ms)-                     0.998 R²   (0.996 R² .. 0.999 R²)-mean                 3.095 ms   (3.065 ms .. 3.128 ms)-std dev              108.5 μs   (88.97 μs .. 134.4 μs)-variance introduced by outliers: 19% (moderately inflated)+time                 3.145 ms   (3.094 ms .. 3.199 ms)+                     0.998 R²   (0.997 R² .. 0.999 R²)+mean                 3.117 ms   (3.089 ms .. 3.147 ms)+std dev              94.41 μs   (77.22 μs .. 119.1 μs)+variance introduced by outliers: 15% (moderately inflated)  benchmarking binary-parser/lazy-bytestring/jp100-time                 2.760 ms   (2.724 ms .. 2.797 ms)-                     0.998 R²   (0.997 R² .. 0.999 R²)-mean                 2.747 ms   (2.718 ms .. 2.776 ms)-std dev              93.90 μs   (71.25 μs .. 122.5 μs)-variance introduced by outliers: 19% (moderately inflated)+time                 2.761 ms   (2.724 ms .. 2.798 ms)+                     0.999 R²   (0.998 R² .. 0.999 R²)+mean                 2.756 ms   (2.735 ms .. 2.782 ms)+std dev              70.93 μs   (57.46 μs .. 94.99 μs)+variance introduced by outliers: 11% (moderately inflated)  benchmarking attoparsec/jp50-time                 1.618 ms   (1.591 ms .. 1.648 ms)-                     0.998 R²   (0.997 R² .. 0.999 R²)-mean                 1.616 ms   (1.602 ms .. 1.633 ms)-std dev              50.98 μs   (40.28 μs .. 69.45 μs)-variance introduced by outliers: 19% (moderately inflated)+time                 1.634 ms   (1.617 ms .. 1.654 ms)+                     0.997 R²   (0.993 R² .. 0.999 R²)+mean                 1.629 ms   (1.608 ms .. 1.659 ms)+std dev              82.30 μs   (55.08 μs .. 123.1 μs)+variance introduced by outliers: 36% (moderately inflated)  benchmarking binary-parser/jp50-time                 1.518 ms   (1.459 ms .. 1.674 ms)-                     0.863 R²   (0.672 R² .. 0.999 R²)-mean                 1.533 ms   (1.466 ms .. 1.801 ms)-std dev              421.6 μs   (44.69 μs .. 893.1 μs)-variance introduced by outliers: 95% (severely inflated)+time                 1.552 ms   (1.464 ms .. 1.739 ms)+                     0.879 R²   (0.730 R² .. 0.999 R²)+mean                 1.509 ms   (1.449 ms .. 1.742 ms)+std dev              344.4 μs   (52.96 μs .. 710.0 μs)+variance introduced by outliers: 93% (severely inflated)  benchmarking attoparsec/lazy-bytestring/jp50-time                 1.668 ms   (1.655 ms .. 1.684 ms)-                     0.999 R²   (0.999 R² .. 0.999 R²)-mean                 1.674 ms   (1.664 ms .. 1.690 ms)-std dev              42.55 μs   (34.99 μs .. 54.22 μs)-variance introduced by outliers: 12% (moderately inflated)+time                 1.668 ms   (1.649 ms .. 1.692 ms)+                     0.998 R²   (0.998 R² .. 0.999 R²)+mean                 1.693 ms   (1.678 ms .. 1.713 ms)+std dev              59.58 μs   (49.87 μs .. 72.55 μs)+variance introduced by outliers: 22% (moderately inflated)  benchmarking binary-parser/lazy-bytestring/jp50-time                 1.436 ms   (1.420 ms .. 1.453 ms)-                     0.999 R²   (0.998 R² .. 0.999 R²)-mean                 1.476 ms   (1.462 ms .. 1.490 ms)-std dev              47.49 μs   (39.59 μs .. 57.24 μs)-variance introduced by outliers: 20% (moderately inflated)+time                 1.471 ms   (1.449 ms .. 1.497 ms)+                     0.998 R²   (0.996 R² .. 0.999 R²)+mean                 1.471 ms   (1.455 ms .. 1.494 ms)+std dev              64.25 μs   (47.02 μs .. 95.22 μs)+variance introduced by outliers: 30% (moderately inflated)  benchmarking attoparsec/numbers-time                 549.6 μs   (541.4 μs .. 558.1 μs)-                     0.999 R²   (0.998 R² .. 0.999 R²)-mean                 545.8 μs   (541.5 μs .. 550.4 μs)-std dev              14.23 μs   (11.57 μs .. 18.70 μs)-variance introduced by outliers: 17% (moderately inflated)+time                 563.8 μs   (557.0 μs .. 569.9 μs)+                     0.998 R²   (0.997 R² .. 0.999 R²)+mean                 562.5 μs   (556.8 μs .. 569.2 μs)+std dev              20.30 μs   (15.46 μs .. 31.17 μs)+variance introduced by outliers: 28% (moderately inflated)  benchmarking binary-parser/numbers-time                 365.3 μs   (361.6 μs .. 369.2 μs)+time                 376.8 μs   (373.2 μs .. 380.7 μs)                      0.999 R²   (0.998 R² .. 0.999 R²)-mean                 366.2 μs   (363.1 μs .. 369.7 μs)-std dev              11.05 μs   (9.100 μs .. 13.57 μs)-variance introduced by outliers: 23% (moderately inflated)+mean                 380.4 μs   (377.2 μs .. 383.7 μs)+std dev              10.72 μs   (8.971 μs .. 14.59 μs)+variance introduced by outliers: 21% (moderately inflated)  benchmarking attoparsec/lazy-bytestring/numbers-time                 550.6 μs   (545.9 μs .. 554.0 μs)+time                 559.7 μs   (553.9 μs .. 566.1 μs)                      0.999 R²   (0.998 R² .. 0.999 R²)-mean                 547.2 μs   (542.7 μs .. 551.8 μs)-std dev              14.99 μs   (12.38 μs .. 19.36 μs)-variance introduced by outliers: 19% (moderately inflated)+mean                 562.2 μs   (556.1 μs .. 568.5 μs)+std dev              20.69 μs   (16.75 μs .. 26.22 μs)+variance introduced by outliers: 29% (moderately inflated)  benchmarking binary-parser/lazy-bytestring/numbers-time                 370.4 μs   (364.8 μs .. 379.3 μs)-                     0.932 R²   (0.791 R² .. 0.999 R²)-mean                 397.1 μs   (371.9 μs .. 490.7 μs)-std dev              152.8 μs   (12.14 μs .. 323.0 μs)-variance introduced by outliers: 99% (severely inflated)+time                 385.9 μs   (378.3 μs .. 399.4 μs)+                     0.941 R²   (0.847 R² .. 0.999 R²)+mean                 405.0 μs   (383.5 μs .. 480.0 μs)+std dev              116.0 μs   (14.13 μs .. 230.5 μs)+variance introduced by outliers: 98% (severely inflated)  benchmarking attoparsec/twitter1-time                 24.33 μs   (24.01 μs .. 24.61 μs)+time                 24.99 μs   (24.71 μs .. 25.24 μs)                      0.999 R²   (0.998 R² .. 0.999 R²)-mean                 24.11 μs   (23.86 μs .. 24.38 μs)-std dev              907.2 ns   (757.5 ns .. 1.133 μs)-variance introduced by outliers: 43% (moderately inflated)+mean                 25.12 μs   (24.87 μs .. 25.45 μs)+std dev              973.2 ns   (772.2 ns .. 1.293 μs)+variance introduced by outliers: 45% (moderately inflated)  benchmarking binary-parser/twitter1-time                 18.40 μs   (18.27 μs .. 18.54 μs)-                     0.999 R²   (0.999 R² .. 0.999 R²)-mean                 18.39 μs   (18.19 μs .. 18.58 μs)-std dev              657.9 ns   (537.6 ns .. 849.5 ns)-variance introduced by outliers: 42% (moderately inflated)+time                 18.89 μs   (18.63 μs .. 19.17 μs)+                     0.999 R²   (0.998 R² .. 0.999 R²)+mean                 18.84 μs   (18.67 μs .. 19.07 μs)+std dev              665.9 ns   (527.6 ns .. 870.2 ns)+variance introduced by outliers: 41% (moderately inflated)  benchmarking attoparsec/lazy-bytestring/twitter1-time                 24.34 μs   (24.10 μs .. 24.62 μs)-                     0.999 R²   (0.998 R² .. 0.999 R²)-mean                 24.30 μs   (24.00 μs .. 24.57 μs)-std dev              959.3 ns   (787.1 ns .. 1.229 μs)-variance introduced by outliers: 46% (moderately inflated)+time                 24.80 μs   (24.40 μs .. 25.23 μs)+                     0.998 R²   (0.997 R² .. 0.999 R²)+mean                 24.98 μs   (24.67 μs .. 25.40 μs)+std dev              1.165 μs   (879.9 ns .. 1.845 μs)+variance introduced by outliers: 54% (severely inflated)  benchmarking binary-parser/lazy-bytestring/twitter1-time                 18.27 μs   (18.11 μs .. 18.45 μs)-                     0.999 R²   (0.999 R² .. 0.999 R²)-mean                 18.43 μs   (18.25 μs .. 18.65 μs)-std dev              627.3 ns   (509.6 ns .. 763.0 ns)-variance introduced by outliers: 39% (moderately inflated)+time                 19.14 μs   (18.95 μs .. 19.33 μs)+                     0.999 R²   (0.998 R² .. 0.999 R²)+mean                 19.13 μs   (18.95 μs .. 19.34 μs)+std dev              654.4 ns   (531.6 ns .. 864.0 ns)+variance introduced by outliers: 40% (moderately inflated)  benchmarking attoparsec/twitter10-time                 177.9 μs   (175.8 μs .. 179.7 μs)-                     0.999 R²   (0.999 R² .. 0.999 R²)-mean                 176.6 μs   (175.0 μs .. 178.3 μs)-std dev              5.613 μs   (4.525 μs .. 7.147 μs)-variance introduced by outliers: 28% (moderately inflated)+time                 177.8 μs   (176.8 μs .. 179.1 μs)+                     0.999 R²   (0.999 R² .. 1.000 R²)+mean                 179.5 μs   (178.1 μs .. 181.6 μs)+std dev              5.936 μs   (4.418 μs .. 8.262 μs)+variance introduced by outliers: 30% (moderately inflated)  benchmarking binary-parser/twitter10-time                 137.7 μs   (133.9 μs .. 141.0 μs)-                     0.974 R²   (0.940 R² .. 0.996 R²)-mean                 217.6 μs   (158.7 μs .. 343.3 μs)-std dev              289.1 μs   (104.6 μs .. 496.4 μs)+time                 141.9 μs   (138.5 μs .. 144.4 μs)+                     0.923 R²   (0.753 R² .. 0.999 R²)+mean                 168.6 μs   (144.3 μs .. 252.2 μs)+std dev              133.9 μs   (7.126 μs .. 276.1 μs) variance introduced by outliers: 99% (severely inflated)  benchmarking attoparsec/lazy-bytestring/twitter10-time                 172.6 μs   (171.0 μs .. 174.1 μs)+time                 174.4 μs   (172.2 μs .. 176.9 μs)                      0.999 R²   (0.998 R² .. 0.999 R²)-mean                 174.4 μs   (172.5 μs .. 176.7 μs)-std dev              7.031 μs   (5.406 μs .. 9.696 μs)-variance introduced by outliers: 39% (moderately inflated)+mean                 176.3 μs   (174.6 μs .. 178.7 μs)+std dev              6.816 μs   (5.259 μs .. 9.747 μs)+variance introduced by outliers: 37% (moderately inflated)  benchmarking binary-parser/lazy-bytestring/twitter10-time                 138.8 μs   (137.9 μs .. 139.9 μs)-                     0.999 R²   (0.999 R² .. 0.999 R²)-mean                 140.6 μs   (139.2 μs .. 142.2 μs)-std dev              4.915 μs   (3.984 μs .. 6.230 μs)-variance introduced by outliers: 33% (moderately inflated)+time                 140.9 μs   (139.7 μs .. 142.1 μs)+                     0.999 R²   (0.998 R² .. 0.999 R²)+mean                 141.9 μs   (140.4 μs .. 143.3 μs)+std dev              4.869 μs   (3.996 μs .. 6.329 μs)+variance introduced by outliers: 32% (moderately inflated)  benchmarking attoparsec/twitter100-time                 2.273 ms   (2.236 ms .. 2.301 ms)+time                 2.316 ms   (2.278 ms .. 2.348 ms)                      0.998 R²   (0.997 R² .. 0.999 R²)-mean                 2.276 ms   (2.258 ms .. 2.299 ms)-std dev              69.99 μs   (50.91 μs .. 109.2 μs)-variance introduced by outliers: 17% (moderately inflated)+mean                 2.311 ms   (2.288 ms .. 2.340 ms)+std dev              86.80 μs   (68.60 μs .. 125.5 μs)+variance introduced by outliers: 23% (moderately inflated)  benchmarking binary-parser/twitter100-time                 2.035 ms   (2.007 ms .. 2.059 ms)-                     0.998 R²   (0.997 R² .. 0.999 R²)-mean                 2.056 ms   (2.034 ms .. 2.078 ms)-std dev              74.85 μs   (62.02 μs .. 88.08 μs)-variance introduced by outliers: 22% (moderately inflated)+time                 2.066 ms   (2.037 ms .. 2.097 ms)+                     0.998 R²   (0.996 R² .. 0.999 R²)+mean                 2.117 ms   (2.089 ms .. 2.149 ms)+std dev              101.3 μs   (82.59 μs .. 122.3 μs)+variance introduced by outliers: 33% (moderately inflated)  benchmarking attoparsec/lazy-bytestring/twitter100-time                 2.550 ms   (2.322 ms .. 2.870 ms)-                     0.960 R²   (0.931 R² .. 0.998 R²)-mean                 2.359 ms   (2.322 ms .. 2.459 ms)-std dev              194.3 μs   (75.87 μs .. 386.2 μs)-variance introduced by outliers: 58% (severely inflated)+time                 2.596 ms   (2.301 ms .. 3.072 ms)+                     0.921 R²   (0.882 R² .. 0.998 R²)+mean                 2.415 ms   (2.370 ms .. 2.581 ms)+std dev              255.4 μs   (74.33 μs .. 511.0 μs)+variance introduced by outliers: 69% (severely inflated)  benchmarking binary-parser/lazy-bytestring/twitter100-time                 2.016 ms   (1.983 ms .. 2.050 ms)-                     0.998 R²   (0.997 R² .. 0.999 R²)-mean                 2.052 ms   (2.031 ms .. 2.078 ms)-std dev              80.58 μs   (63.40 μs .. 112.5 μs)-variance introduced by outliers: 25% (moderately inflated)+time                 2.070 ms   (2.037 ms .. 2.103 ms)+                     0.997 R²   (0.995 R² .. 0.998 R²)+mean                 2.084 ms   (2.060 ms .. 2.111 ms)+std dev              85.16 μs   (68.84 μs .. 109.8 μs)+variance introduced by outliers: 27% (moderately inflated)  benchmarking attoparsec/twitter20-time                 377.3 μs   (373.5 μs .. 380.8 μs)-                     0.999 R²   (0.998 R² .. 0.999 R²)-mean                 372.9 μs   (369.3 μs .. 376.9 μs)-std dev              12.50 μs   (10.42 μs .. 15.59 μs)+time                 377.1 μs   (372.9 μs .. 382.8 μs)+                     0.998 R²   (0.998 R² .. 0.999 R²)+mean                 379.3 μs   (375.7 μs .. 383.0 μs)+std dev              12.74 μs   (10.89 μs .. 16.09 μs) variance introduced by outliers: 28% (moderately inflated)  benchmarking binary-parser/twitter20-time                 331.1 μs   (327.1 μs .. 335.0 μs)-                     0.999 R²   (0.998 R² .. 0.999 R²)-mean                 329.2 μs   (325.8 μs .. 332.4 μs)-std dev              11.08 μs   (9.652 μs .. 13.51 μs)-variance introduced by outliers: 28% (moderately inflated)+time                 336.0 μs   (332.3 μs .. 339.5 μs)+                     0.998 R²   (0.998 R² .. 0.999 R²)+mean                 329.5 μs   (325.6 μs .. 333.5 μs)+std dev              13.34 μs   (11.36 μs .. 15.62 μs)+variance introduced by outliers: 36% (moderately inflated)  benchmarking attoparsec/lazy-bytestring/twitter20-time                 375.3 μs   (372.2 μs .. 377.7 μs)-                     0.999 R²   (0.999 R² .. 0.999 R²)-mean                 372.5 μs   (369.2 μs .. 376.2 μs)-std dev              11.27 μs   (9.275 μs .. 14.00 μs)-variance introduced by outliers: 23% (moderately inflated)+time                 378.6 μs   (375.4 μs .. 382.0 μs)+                     0.999 R²   (0.998 R² .. 0.999 R²)+mean                 379.0 μs   (375.5 μs .. 383.1 μs)+std dev              11.67 μs   (9.355 μs .. 15.51 μs)+variance introduced by outliers: 24% (moderately inflated)  benchmarking binary-parser/lazy-bytestring/twitter20-time                 333.5 μs   (330.7 μs .. 336.2 μs)-                     0.999 R²   (0.998 R² .. 0.999 R²)-mean                 334.0 μs   (330.9 μs .. 337.5 μs)-std dev              10.37 μs   (8.658 μs .. 13.04 μs)-variance introduced by outliers: 25% (moderately inflated)+time                 320.5 μs   (315.1 μs .. 327.5 μs)+                     0.998 R²   (0.995 R² .. 0.999 R²)+mean                 320.7 μs   (317.6 μs .. 324.9 μs)+std dev              11.79 μs   (8.713 μs .. 16.30 μs)+variance introduced by outliers: 32% (moderately inflated)  benchmarking attoparsec/twitter50-time                 1.247 ms   (1.125 ms .. 1.524 ms)-                     0.876 R²   (0.782 R² .. 0.999 R²)-mean                 1.169 ms   (1.134 ms .. 1.326 ms)-std dev              208.9 μs   (24.07 μs .. 477.5 μs)-variance introduced by outliers: 89% (severely inflated)+time                 1.251 ms   (1.118 ms .. 1.536 ms)+                     0.850 R²   (0.749 R² .. 0.999 R²)+mean                 1.187 ms   (1.146 ms .. 1.299 ms)+std dev              233.9 μs   (41.99 μs .. 447.0 μs)+variance introduced by outliers: 92% (severely inflated)  benchmarking binary-parser/twitter50-time                 1.020 ms   (1.008 ms .. 1.031 ms)-                     0.998 R²   (0.998 R² .. 0.999 R²)-mean                 1.032 ms   (1.023 ms .. 1.042 ms)-std dev              32.65 μs   (26.99 μs .. 40.35 μs)+time                 1.025 ms   (1.012 ms .. 1.039 ms)+                     0.999 R²   (0.998 R² .. 0.999 R²)+mean                 1.028 ms   (1.019 ms .. 1.039 ms)+std dev              32.69 μs   (24.30 μs .. 43.61 μs) variance introduced by outliers: 20% (moderately inflated)  benchmarking attoparsec/lazy-bytestring/twitter50-time                 1.105 ms   (1.085 ms .. 1.119 ms)-                     0.997 R²   (0.996 R² .. 0.998 R²)-mean                 1.144 ms   (1.122 ms .. 1.176 ms)-std dev              88.80 μs   (68.65 μs .. 110.9 μs)-variance introduced by outliers: 60% (severely inflated)--benchmarking binary-parser/lazy-bytestring/twitter50-time                 1.026 ms   (1.015 ms .. 1.038 ms)+time                 1.113 ms   (1.100 ms .. 1.127 ms)                      0.999 R²   (0.998 R² .. 0.999 R²)-mean                 1.035 ms   (1.027 ms .. 1.043 ms)-std dev              28.09 μs   (22.72 μs .. 36.10 μs)-variance introduced by outliers: 16% (moderately inflated)+mean                 1.127 ms   (1.117 ms .. 1.139 ms)+std dev              35.76 μs   (28.73 μs .. 47.10 μs)+variance introduced by outliers: 21% (moderately inflated) -Benchmark criterion: FINISH+benchmarking binary-parser/lazy-bytestring/twitter50+time                 1.055 ms   (1.039 ms .. 1.071 ms)+                     0.998 R²   (0.997 R² .. 0.999 R²)+mean                 1.042 ms   (1.032 ms .. 1.055 ms)+std dev              36.88 μs   (28.99 μs .. 54.81 μs)+variance introduced by outliers: 25% (moderately inflated) ```
bench/HttpReq.hs view
@@ -102,8 +102,16 @@         bs <- SC.takeWhile p         if BC.null bs then fail "takeWhile1" else return bs -scBodyLine = SC.takeWhile (\w -> let c = w2c w in c /= '\r' && c /= '\n') <* SC.char8 '\n'+scEndOfLine = do        -- scanner doesn't provide endOfLine, so we roll one here+    w <- SC.anyWord8+    case w of+        10 -> return ()+        13 -> SC.word8 10+        _  -> fail "endOfLine"+{-# INLINE scEndOfLine #-} +scBodyLine = SC.takeWhile (\w -> let c = w2c w in c /= '\r' && c /= '\n') <* scEndOfLine+ scReqLine = do   m <- (SC.takeWhile (not . BP.isSpace) <* SC.char8 ' ')   (p,q) <- BC.break (=='?') <$> (SC.takeWhile (not . BP.isSpace) <* SC.char8 ' ')@@ -112,7 +120,7 @@  scHttpVersion = http11 <$ SC.string "HTTP/1.1" -scRequest = (,) <$> (scReqLine <* SC.char8 '\n') <*> scManyHeader+scRequest = (,) <$> (scReqLine <* scEndOfLine) <*> scManyHeader  scManyHeader = do   w <- SC.lookAhead
binary-parsers.cabal view
@@ -1,5 +1,5 @@ name:                binary-parsers-version:             0.2.1.0+version:             0.2.2.0 synopsis:            Extends binary with parsec/attoparsec style parsing combinators. description:         Extends binary with parsec/attoparsec style parsing combinators. license:             BSD3