module Main where
import Rebase.Prelude
import Criterion.Main
import qualified Main.Model
import qualified Main.JSONBytesBuilder
import qualified Main.Aeson
import qualified Data.Aeson
import qualified Rebase.Data.ByteString.Lazy
import qualified JSONBytesBuilder.ByteString.ByteString
import qualified JSONBytesBuilder.ByteString.LazyByteString
main =
do
input <- load "samples/twitter100.json"
defaultMain
[
bench "strict" (nf (JSONBytesBuilder.ByteString.ByteString.jsonLiteral . Main.JSONBytesBuilder.result) input)
,
bench "lazy" (nf (JSONBytesBuilder.ByteString.LazyByteString.jsonLiteral . Main.JSONBytesBuilder.result) input)
]
load :: FilePath -> IO Main.Model.Result
load fileName =
(=<<) (either fail return . Data.Aeson.eitherDecode') $
Rebase.Data.ByteString.Lazy.readFile fileName