on master help sign in
Get the silly benchmark framework and AesonEncode cooperating
8d99fb8Bryan O'Sullivan
benchmarks/AesonEncode.hs+6−2
@@ -4,6 +4,7 @@ import Control.Exception
4import Control.Monad
4import Control.Monad
5import Data.Aeson
5import Data.Aeson
6import Data.Attoparsec (IResult(..), parseWith)
6import Data.Attoparsec (IResult(..), parseWith)
7+import Data.Char (isDigit)
7import Data.Time.Clock
8import Data.Time.Clock
8import System.Environment (getArgs)
9import System.Environment (getArgs)
9import System.IO
10import System.IO
@@ -22,7 +23,10 @@ instance NFData L.ByteString where
22
23
23main :: IO ()
24main :: IO ()
24main = do
25main = do
26+ args0 <- getArgs
25− (cnt:args) <- getArgs
27+ let (cnt,args) = case args0 of
28+ (i:c:a) | all isDigit i && all isDigit c -> (c,a)
29+ (c:a) -> (c,a)
26 let count = read cnt :: Int
30 let count = read cnt :: Int
27 forM_ args $ \arg -> bracket (openFile arg ReadMode) hClose $ \h -> do
31 forM_ args $ \arg -> bracket (openFile arg ReadMode) hClose $ \h -> do
28 putStrLn $ arg ++ ":"
32 putStrLn $ arg ++ ":"
@@ -39,5 +43,5 @@ main = do
39 loop 0 r0
43 loop 0 r0
40 delta <- flip diffUTCTime start `fmap` getCurrentTime
44 delta <- flip diffUTCTime start `fmap` getCurrentTime
41 let rate = fromIntegral count / realToFrac delta :: Double
45 let rate = fromIntegral count / realToFrac delta :: Double
42− putStrLn $ " " ++ show delta
46+ putStrLn $ " " ++ cnt ++ " good, " ++ show delta
43 putStrLn $ " " ++ show (round rate :: Int) ++ " per second"
47 putStrLn $ " " ++ show (round rate :: Int) ++ " per second"