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 +5/−0
- Data/Binary/Parser.hs +28/−2
- Data/Binary/Parser/Char8.hs +1/−1
- Data/Binary/Parser/Numeric.hs +17/−15
- Data/Binary/Parser/Word8.hs +22/−23
- README.md +304/−306
- bench/HttpReq.hs +10/−2
- binary-parsers.cabal +1/−1
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