on master help sign in
32 lines 873 B history raw
1{-# LANGUAGE NoImplicitPrelude #-}
2{-# LANGUAGE ScopedTypeVariables #-}
4{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
6module Main (main) where
8import Prelude.Compat
10import Criterion.Main
11import qualified Data.Aeson.Parser.UnescapeFFI as FFI
12import qualified Data.Aeson.Parser.UnescapePure as Pure
14import qualified Data.ByteString.Char8 as BS
15import System.Environment (getArgs, withArgs)
17main :: IO ()
18main = do
19 args_ <- getArgs
20 let (args, p, n) =
21 case args_ of
22 "--pattern" : p : args_ -> k p args_
23 _ -> k "\\\"" args_
24 k p args_ =
25 case args_ of
26 "--repeat" : n : args_ -> (args_, p, read n)
27 args_ -> (args_, p, 10000)
28 input = BS.concat $ replicate n $ BS.pack p
29 withArgs args $ defaultMain
30 [ bench "ffi" $ whnf FFI.unescapeText input
31 , bench "pure" $ whnf Pure.unescapeText input
32 ]