1- {-# LANGUAGE BangPatterns #-}
21{-# LANGUAGE ScopedTypeVariables #-}
32{-# LANGUAGE TypeApplications #-}
43
5- import Gauge.Main (defaultMain , bgroup ,bench , whnf )
4+ import Gauge.Main (bench , bgroup , defaultMain , whnf )
65
76import Metrics1024 (encodedMetrics1024 )
8- import Twitter100 (encodedTwitter100 , byteStringTwitter100 )
9- import Url100 (encodedUrl100 , byteStringUrl100 )
7+ import Twitter100 (byteStringTwitter100 , encodedTwitter100 )
8+ import Url100 (byteStringUrl100 , encodedUrl100 )
109
10+ import qualified Data.Aeson as Aeson
11+ import qualified Data.ByteString.Lazy as LBS
1112import qualified Data.Bytes as Bytes
1213import qualified Data.Bytes.Builder as BLDR
1314import qualified Data.Bytes.Chunks as Chunks
14- import qualified Data.ByteString.Lazy as LBS
1515import qualified Json as J
1616import qualified Json.Smile as Smile
17- import qualified Data.Aeson as Aeson
1817
1918main :: IO ()
2019main = do
@@ -31,58 +30,80 @@ main = do
3130 Nothing -> fail " aeson failed to decode twitter-100"
3231 Just (v :: Aeson. Value ) -> pure v
3332 defaultMain
34- [ bgroup " json"
35- [ bgroup " twitter"
36- [ bgroup " 100"
37- [ bench " decode" $ whnf
38- (\ b -> J. decode (Bytes. fromByteArray b))
39- encodedTwitter100
40- , bench " encode" $ whnf
41- (\ v -> Chunks. length (BLDR. run 128 (J. encode v)))
42- valueTwitter100
43- , bench " encode-smile" $ whnf
44- (\ v -> Chunks. length (BLDR. run 128 (Smile. encode v)))
45- valueTwitter100
46- ]
47- ]
48- , bgroup " url"
49- [ bgroup " 100"
50- [ bench " decode" $ whnf
51- (\ b -> J. decode (Bytes. fromByteArray b))
52- encodedUrl100
53- , bench " encode" $ whnf
54- (\ v -> Chunks. length (BLDR. run 128 (J. encode v)))
55- valueUrl100
56- , bench " encode-smile" $ whnf
57- (\ v -> Chunks. length (BLDR. run 128 (Smile. encode v)))
58- valueUrl100
59- ]
60- ]
61- , bgroup " metrics"
62- [ bgroup " 1024"
63- [ bench " encode" $ whnf
64- (\ v -> Chunks. length (BLDR. run 128 (J. encode v)))
65- valueMetrics1024
66- , bench " encode-smile" $ whnf
67- (\ v -> Chunks. length (BLDR. run 128 (Smile. encode v)))
68- valueMetrics1024
69- ]
70- ]
71- ]
72- , bgroup " aeson"
73- [ bgroup " twitter"
74- [ bgroup " 100"
75- [ bench " decode"
76- (whnf (Aeson. decodeStrict' @ Aeson. Value ) byteStringTwitter100)
77- , bench " encode" $ whnf
78- (\ v -> LBS. length (Aeson. encode v))
79- aesonValueTwitter100
80- ]
33+ [ bgroup
34+ " json"
35+ [ bgroup
36+ " twitter"
37+ [ bgroup
38+ " 100"
39+ [ bench " decode" $
40+ whnf
41+ (\ b -> J. decode (Bytes. fromByteArray b))
42+ encodedTwitter100
43+ , bench " encode" $
44+ whnf
45+ (\ v -> Chunks. length (BLDR. run 128 (J. encode v)))
46+ valueTwitter100
47+ , bench " encode-smile" $
48+ whnf
49+ (\ v -> Chunks. length (BLDR. run 128 (Smile. encode v)))
50+ valueTwitter100
51+ ]
52+ ]
53+ , bgroup
54+ " url"
55+ [ bgroup
56+ " 100"
57+ [ bench " decode" $
58+ whnf
59+ (\ b -> J. decode (Bytes. fromByteArray b))
60+ encodedUrl100
61+ , bench " encode" $
62+ whnf
63+ (\ v -> Chunks. length (BLDR. run 128 (J. encode v)))
64+ valueUrl100
65+ , bench " encode-smile" $
66+ whnf
67+ (\ v -> Chunks. length (BLDR. run 128 (Smile. encode v)))
68+ valueUrl100
69+ ]
70+ ]
71+ , bgroup
72+ " metrics"
73+ [ bgroup
74+ " 1024"
75+ [ bench " encode" $
76+ whnf
77+ (\ v -> Chunks. length (BLDR. run 128 (J. encode v)))
78+ valueMetrics1024
79+ , bench " encode-smile" $
80+ whnf
81+ (\ v -> Chunks. length (BLDR. run 128 (Smile. encode v)))
82+ valueMetrics1024
83+ ]
84+ ]
8185 ]
82- , bgroup " url"
83- [ bgroup " 100"
84- [ bench " decode" (whnf (Aeson. decodeStrict' @ Aeson. Value ) byteStringUrl100)
85- ]
86+ , bgroup
87+ " aeson"
88+ [ bgroup
89+ " twitter"
90+ [ bgroup
91+ " 100"
92+ [ bench
93+ " decode"
94+ (whnf (Aeson. decodeStrict' @ Aeson. Value ) byteStringTwitter100)
95+ , bench " encode" $
96+ whnf
97+ (\ v -> LBS. length (Aeson. encode v))
98+ aesonValueTwitter100
99+ ]
100+ ]
101+ , bgroup
102+ " url"
103+ [ bgroup
104+ " 100"
105+ [ bench " decode" (whnf (Aeson. decodeStrict' @ Aeson. Value ) byteStringUrl100)
106+ ]
107+ ]
86108 ]
87- ]
88109 ]
0 commit comments