git.iko.soy/typeable/attoparsec
on master help sign in
Backport Bas's number benchmarks
commit9756e25da1a64ab045445310fcb7cefa7941a961 authorBryan O'Sullivan <bos@serpentine.com> dateFri 25 Oct 2013, 09:48 (13 years ago) parent6eac3bd
1 file changed+48
benchmarks/Benchmarks.hs+48
benchmarks/Benchmarks.hs+48
@@ -81,6 +81,54 @@ main = do
8181 bench "short" $ nf (AB.parse quotedString) (BC.pack "abcdefghijk\"")
8282 , bench "long" $ nf (AB.parse quotedString) b
8383 ]
84+
85+ , let strN = "1234.56789"
86+ strNePos = "1234.56789e3"
87+ strNeNeg = "1234.56789e-3"
88+ in
89+ bgroup "numbers"
90+ [ let !tN = T.pack strN
91+ !tNePos = T.pack strNePos
92+ !tNeNeg = T.pack strNeNeg
93+ in bgroup "Text"
94+ [
95+ bgroup "no power"
96+ [ bench "double" $ nf (AT.parseOnly AT.double) tN
97+ , bench "number" $ nf (AT.parseOnly AT.number) tN
98+ , bench "rational" $ nf (AT.parseOnly (AT.rational :: AT.Parser Rational)) tN
99+ ]
100+ , bgroup "positive power"
101+ [ bench "double" $ nf (AT.parseOnly AT.double) tNePos
102+ , bench "number" $ nf (AT.parseOnly AT.number) tNePos
103+ , bench "rational" $ nf (AT.parseOnly (AT.rational :: AT.Parser Rational)) tNePos
104+ ]
105+ , bgroup "negative power"
106+ [ bench "double" $ nf (AT.parseOnly AT.double) tNeNeg
107+ , bench "number" $ nf (AT.parseOnly AT.number) tNeNeg
108+ , bench "rational" $ nf (AT.parseOnly (AT.rational :: AT.Parser Rational)) tNeNeg
109+ ]
110+ ]
111+ , let !bN = BC.pack strN
112+ !bNePos = BC.pack strNePos
113+ !bNeNeg = BC.pack strNeNeg
114+ in bgroup "ByteString"
115+ [ bgroup "no power"
116+ [ bench "double" $ nf (AC.parseOnly AC.double) bN
117+ , bench "number" $ nf (AC.parseOnly AC.number) bN
118+ , bench "rational" $ nf (AC.parseOnly (AC.rational :: AC.Parser Rational)) bN
119+ ]
120+ , bgroup "positive power"
121+ [ bench "double" $ nf (AC.parseOnly AC.double) bNePos
122+ , bench "number" $ nf (AC.parseOnly AC.number) bNePos
123+ , bench "rational" $ nf (AC.parseOnly (AC.rational :: AC.Parser Rational)) bNePos
124+ ]
125+ , bgroup "negative power"
126+ [ bench "double" $ nf (AC.parseOnly AC.double) bNeNeg
127+ , bench "number" $ nf (AC.parseOnly AC.number) bNeNeg
128+ , bench "rational" $ nf (AC.parseOnly (AC.rational :: AC.Parser Rational)) bNeNeg
129+ ]
130+ ]
131+ ]
84132 ]
85133
86134-- Benchmarks bind and (potential) bounds-check merging.