aeson-1.3.0.0: benchmarks/Escape.hs
{-# LANGUAGE ScopedTypeVariables #-}
{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
module Main (main) where
import Prelude ()
import Prelude.Compat
import Criterion.Main
import qualified Data.Aeson.Parser.UnescapeFFI as FFI
import qualified Data.Aeson.Parser.UnescapePure as Pure
import qualified Data.ByteString.Char8 as BS
import System.Environment (getArgs, withArgs)
main :: IO ()
main = do
args_ <- getArgs
let (args, p, n) =
case args_ of
"--pattern" : p : args_ -> k p args_
_ -> k "\\\"" args_
k p args_ =
case args_ of
"--repeat" : n : args_ -> (args_, p, read n)
args_ -> (args_, p, 10000)
input = BS.concat $ replicate n $ BS.pack p
withArgs args $ defaultMain
[ bench "ffi" $ whnf FFI.unescapeText input
, bench "pure" $ whnf Pure.unescapeText input
]