on 0.11.1.2 help sign in
typeable/aeson/benchmarks/AesonTuples.hs
45 lines 1.1 kB history raw
1module Main where
3--------------------------------------------------------------------------------
5import Criterion.Main
6import Control.DeepSeq (deepseq)
7import Data.Aeson
9--------------------------------------------------------------------------------
11type FJ a = Value -> Result a
13type T2 = (Int, Int)
14type T3 = (Int, Int, Int)
15type T4 = (Int, Int, Int, Int)
17t2 :: T2
18t2 = (1, 2)
20t3 :: T3
21t3 = (1, 2, 3)
23t4 :: T4
24t4 = (1, 2, 3, 4)
26main :: IO ()
27main = let v2 = toJSON t2
28 v3 = toJSON t3
29 v4 = toJSON t4
30 in t2 `deepseq` t3 `deepseq` t4 `deepseq`
31 v2 `deepseq` v3 `deepseq` v4 `deepseq`
32 defaultMain
33 [ bgroup "t2"
34 [ bench "toJSON" (nf toJSON t2)
35 , bench "fromJSON" (nf (fromJSON :: FJ T2) v2)
36 ]
37 , bgroup "t3"
38 [ bench "toJSON" (nf toJSON t3)
39 , bench "fromJSON" (nf (fromJSON :: FJ T3) v3)
40 ]
41 , bgroup "t4"
42 [ bench "toJSON" (nf toJSON t4)
43 , bench "fromJSON" (nf (fromJSON :: FJ T4) v4)
44 ]
45 ]