on master help sign in
Encoding performance: compare like with like.
commite358efbbb0c6fc488f413b3ae71b36ba1a21a02f authorBryan O'Sullivan <bos@serpentine.com> dateThu 22 Dec 2011, 11:30 (15 years ago) parent994b227
2 files changed+8−2
benchmarks/CompareWithJSON.hs+7−2 benchmarks/aeson-benchmarks.cabal+1
benchmarks/CompareWithJSON.hs+7−2
@@ -1,5 +1,7 @@
11{-# OPTIONS_GHC -fno-warn-orphans #-}
22
3+import Blaze.ByteString.Builder (toLazyByteString)
4+import Blaze.ByteString.Builder.Char.Utf8 (fromString)
35import Control.DeepSeq (NFData(rnf))
46import Criterion.Main
57import qualified Data.Aeson as A
@@ -33,6 +35,9 @@ decodeA s = case A.decode s of
3335 Just v -> v
3436 Nothing -> error "fail to parse via Aeson"
3537
38+encodeJ :: J.JSValue -> BL.ByteString
39+encodeJ = toLazyByteString . fromString . J.encode
40+
3641main :: IO ()
3742main = do
3843 let enFile = "json-data/twitter100.json"
@@ -55,11 +60,11 @@ main = do
5560 , bgroup "encode" [
5661 bgroup "en" [
5762 bench "aeson" $ nf A.encode (decodeA enA)
58− , bench "json" $ nf J.encode (decodeJ enJ)
63+ , bench "json" $ nf encodeJ (decodeJ enJ)
5964 ]
6065 , bgroup "jp" [
6166 bench "aeson" $ nf A.encode (decodeA jpA)
62− , bench "json" $ nf J.encode (decodeJ jpJ)
67+ , bench "json" $ nf encodeJ (decodeJ jpJ)
6368 ]
6469 ]
6570 ]
benchmarks/aeson-benchmarks.cabal+1
@@ -10,6 +10,7 @@ executable aeson-benchmark-compare-with-json
1010 build-depends:
1111 aeson == 0.4.0.0,
1212 base,
13+ blaze-builder,
1314 bytestring,
1415 criterion,
1516 json