on master help sign in
Try with scientific too
139972eOleg Grenrus
benchmarks/Issue673.hs+19−9
@@ -17,6 +17,7 @@ module Main (
17import Criterion.Main
17import Criterion.Main
18import Prelude.Compat
18import Prelude.Compat
19import Data.Int (Int64)
19import Data.Int (Int64)
20+import Data.Scientific (Scientific)
20
21
21import qualified Data.Aeson as A
22import qualified Data.Aeson as A
22import qualified Data.ByteString.Lazy as LBS
23import qualified Data.ByteString.Lazy as LBS
@@ -25,6 +26,9 @@ import qualified Data.ByteString.Lazy.Char8 as LBS8
25decodeInt :: LBS.ByteString -> Maybe Int
26decodeInt :: LBS.ByteString -> Maybe Int
26decodeInt = A.decode
27decodeInt = A.decode
27
28
29+decodeScientific :: LBS.ByteString -> Maybe Scientific
30+decodeScientific = A.decode
31+
28generate :: Int64 -> LBS.ByteString
32generate :: Int64 -> LBS.ByteString
29generate n = LBS8.replicate n '1'
33generate n = LBS8.replicate n '1'
30
34
@@ -55,16 +59,22 @@ input8192 = generate 8192
55input16384 :: LBS.ByteString
59input16384 :: LBS.ByteString
56input16384 = generate 16384
60input16384 = generate 16384
57
61
62+
58main :: IO ()
63main :: IO ()
59main = defaultMain
64main = defaultMain
60 -- works on 64bit
65 -- works on 64bit
61− [ bench "17" $ whnf decodeInt input17
66+ [ benchPair "17" input17
62− -- , bench "32" $ whnf decodeInt input32
67+ -- , benchPair "32" input32
63− -- , bench "64" $ whnf decodeInt input64
68+ -- , benchPair "64" input64
64− -- , bench "128" $ whnf decodeInt input128
69+ -- , benchPair "128" input128
65− -- , bench "256" $ whnf decodeInt input256
70+ -- , benchPair "256" input256
66− , bench "2048" $ whnf decodeInt input2048
71+ , benchPair "2048" input2048
67− , bench "4096" $ whnf decodeInt input4096
72+ , benchPair "4096" input4096
68− , bench "8192" $ whnf decodeInt input8192
73+ , benchPair "8192" input8192
69− , bench "16384" $ whnf decodeInt input16384
74+ , benchPair "16384" input16384
70 ]
75 ]
76+ where
77+ benchPair name input = bgroup name
78+ [ bench "Int" $ whnf decodeInt input
79+ , bench "Scientific" $ whnf decodeScientific input
80+ ]
benchmarks/aeson-benchmarks.cabal+1
@@ -335,5 +335,6 @@ executable aeson-issue-673
335 aeson-benchmarks,
335 aeson-benchmarks,
336 base,
336 base,
337 bytestring,
337 bytestring,
338+ scientific,
338 base-compat,
339 base-compat,
339 criterion >= 1.0
340 criterion >= 1.0