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