@@ -6,18 +6,17 @@
66{-# LANGUAGE GeneralizedNewtypeDeriving #-}
77{-# LANGUAGE MagicHash, ScopedTypeVariables #-}
88
9−module Main (main) where
9+module Compare.JsonBench (benchmarks) where
1010
1111import Control.DeepSeq (NFData(..))
1212import Criterion
13−import Criterion.Main
1413import Data.Aeson ((.:))
1514import Data.Monoid ((<>))
1615import Data.Text (Text)
16+import Typed.Common (load)
1717import qualified Data.Aeson as Aeson
1818import qualified Data.BufferBuilder.Json as Json
1919import qualified Data.Json.Builder as JB
20−import Typed.Common (load)
2120
2221data EyeColor = Green | Blue | Brown
2322 deriving (Eq, Show)
@@ -316,11 +315,11 @@ instance JB.Value User where
316315 <> t "greeting" `JB.row` uGreeting
317316 <> t "favoriteFruit" `JB.row` uFavouriteFruit
318317
319−main :: IO ()
320−main = do
321− (parsedUserList :: [User]) <- load "json-data/buffer-builder.json"
322−
323− defaultMain [ bench "bufferbuilder" $ nf Json.encodeJson parsedUserList
324− , bench "aeson" $ nf Aeson.encode parsedUserList
325− , bench "json-builder" $ nf JB.toJsonLBS parsedUserList
326− ]
318+benchmarks :: Benchmark
319+benchmarks = env (load "json-data/buffer-builder.json") $
320+ \ ~(parsedUserList :: [User]) ->
321+ bgroup "json-bench" [
322+ bench "buffer-builder" $ nf Json.encodeJson parsedUserList
323+ , bench "aeson" $ nf Aeson.encode parsedUserList
324+ , bench "json-builder" $ nf JB.toJsonLBS parsedUserList
325+ ]