@@ -1,5 +1,7 @@
1{-# OPTIONS_GHC -fno-warn-orphans #-}
1{-# OPTIONS_GHC -fno-warn-orphans #-}
3+import Blaze.ByteString.Builder (toLazyByteString)
4+import Blaze.ByteString.Builder.Char.Utf8 (fromString)
3import Control.DeepSeq (NFData(rnf))
5import Control.DeepSeq (NFData(rnf))
4import Criterion.Main
6import Criterion.Main
5import qualified Data.Aeson as A
7import qualified Data.Aeson as A
@@ -33,6 +35,9 @@ decodeA s = case A.decode s of
33 Just v -> v
35 Just v -> v
34 Nothing -> error "fail to parse via Aeson"
36 Nothing -> error "fail to parse via Aeson"
38+encodeJ :: J.JSValue -> BL.ByteString
39+encodeJ = toLazyByteString . fromString . J.encode
36main :: IO ()
41main :: IO ()
38 let enFile = "json-data/twitter100.json"
43 let enFile = "json-data/twitter100.json"
@@ -55,11 +60,11 @@ main = do
55 , bgroup "encode" [
60 , bgroup "encode" [
56 bgroup "en" [
61 bgroup "en" [
57 bench "aeson" $ nf A.encode (decodeA enA)
62 bench "aeson" $ nf A.encode (decodeA enA)
58− , bench "json" $ nf J.encode (decodeJ enJ)
63+ , bench "json" $ nf encodeJ (decodeJ enJ)
60 , bgroup "jp" [
65 , bgroup "jp" [
61 bench "aeson" $ nf A.encode (decodeA jpA)
66 bench "aeson" $ nf A.encode (decodeA jpA)
62− , bench "json" $ nf J.encode (decodeJ jpJ)
67+ , bench "json" $ nf encodeJ (decodeJ jpJ)