@@ -76,17 +76,23 @@ instance FromJSONKey T3 where
77-------------------------------------------------------------------------------
77-------------------------------------------------------------------------------
79+value10, value100, value1000, value10000 :: HM.HashMap T.Text T.Text
82+value1000 = value 1000
83+value10000 = value 10000
79encodedValue10 :: LBS.ByteString
85encodedValue10 :: LBS.ByteString
80−encodedValue10 = encode $ value 10
86+encodedValue10 = encode $ value10
82encodedValue100 :: LBS.ByteString
88encodedValue100 :: LBS.ByteString
83−encodedValue100 = encode $ value 100
89+encodedValue100 = encode $ value100
85encodedValue1000 :: LBS.ByteString
91encodedValue1000 :: LBS.ByteString
86−encodedValue1000 = encode $ value 1000
92+encodedValue1000 = encode $ value1000
88encodedValue10000 :: LBS.ByteString
94encodedValue10000 :: LBS.ByteString
89−encodedValue10000 = encode $ value 10000
95+encodedValue10000 = encode $ value10000
91-------------------------------------------------------------------------------
97-------------------------------------------------------------------------------
@@ -125,45 +131,73 @@ benchDecodeHM
125 :: String
131 :: String
126 -> LBS.ByteString
132 -> LBS.ByteString
127 -> Benchmark
133 -> Benchmark
128−benchDecodeHM name val =
134+benchDecodeHM name val = bgroup name
130− [ bench "Text" $ nf (decodeHM proxyText) val
135+ [ bench "Text" $ nf (decodeHM proxyText) val
131− , bench "Identity" $ nf (decodeHM proxyT1) val
136+ , bench "Identity" $ nf (decodeHM proxyT1) val
132− , bench "Coerce" $ nf (decodeHM proxyT2) val
137+ , bench "Coerce" $ nf (decodeHM proxyT2) val
133− , bench "Parser" $ nf (decodeHM proxyT3) val
138+ , bench "Parser" $ nf (decodeHM proxyT3) val
134− , bench "Tagged Text" $ nf (decodeHM $ proxyTagged proxyText) val
139+ , bench "Tagged Text" $ nf (decodeHM $ proxyTagged proxyText) val
135− , bench "Tagged Identity" $ nf (decodeHM $ proxyTagged proxyT1) val
140+ , bench "Tagged Identity" $ nf (decodeHM $ proxyTagged proxyT1) val
136− , bench "Tagged Coerce" $ nf (decodeHM $ proxyTagged proxyT2) val
141+ , bench "Tagged Coerce" $ nf (decodeHM $ proxyTagged proxyT2) val
137− , bench "Tagged Parser" $ nf (decodeHM $ proxyTagged proxyT3) val
142+ , bench "Tagged Parser" $ nf (decodeHM $ proxyTagged proxyT3) val
140benchDecodeMap
145benchDecodeMap
141 :: String
146 :: String
142 -> LBS.ByteString
147 -> LBS.ByteString
143 -> Benchmark
148 -> Benchmark
144−benchDecodeMap name val =
149+benchDecodeMap name val = bgroup name
146− [ bench "Text" $ nf (decodeMap proxyText) val
150+ [ bench "Text" $ nf (decodeMap proxyText) val
147− , bench "Identity" $ nf (decodeMap proxyT1) val
151+ , bench "Identity" $ nf (decodeMap proxyT1) val
148− , bench "Coerce" $ nf (decodeMap proxyT2) val
152+ , bench "Coerce" $ nf (decodeMap proxyT2) val
149− , bench "Parser" $ nf (decodeMap proxyT3) val
153+ , bench "Parser" $ nf (decodeMap proxyT3) val
158+ -> HM.HashMap T.Text T.Text
160+benchEncodeHM name val = bgroup name
161+ [ bench "Text" $ nf encode val
166+ -> HM.HashMap T.Text T.Text
168+benchEncodeMap name val = bgroup name
169+ [ bench "Text" $ nf encode val'
172+ val' :: M.Map T.Text T.Text
173+ val' = M.fromList . HM.toList $ val
152main :: IO ()
175main :: IO ()
154− defaultMain
176+main = defaultMain
155− [ bgroup "decode"
177+ [ bgroup "decode"
156− [ bgroup "HashMap"
178+ [ bgroup "HashMap"
157− [ benchDecodeHM "10" encodedValue10
179+ [ benchDecodeHM "10" encodedValue10
158− , benchDecodeHM "100" encodedValue100
180+ , benchDecodeHM "100" encodedValue100
159− , benchDecodeHM "1000" encodedValue1000
181+ , benchDecodeHM "1000" encodedValue1000
160− , benchDecodeHM "10000" encodedValue10000
182+ , benchDecodeHM "10000" encodedValue10000
162− , bgroup "Map"
184+ , bgroup "Map"
163− [ benchDecodeMap "10" encodedValue10
185+ [ benchDecodeMap "10" encodedValue10
164− , benchDecodeMap "100" encodedValue100
186+ , benchDecodeMap "100" encodedValue100
165− , benchDecodeMap "1000" encodedValue1000
187+ , benchDecodeMap "1000" encodedValue1000
166− , benchDecodeMap "10000" encodedValue10000
188+ , benchDecodeMap "10000" encodedValue10000
193+ [ benchEncodeHM "100" value100
194+ , benchEncodeHM "1000" value1000
195+ , benchEncodeHM "10000" value10000
198+ [ benchEncodeMap "100" value100
199+ , benchEncodeMap "1000" value1000
200+ , benchEncodeMap "10000" value10000