1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
{-# LANGUAGE BangPatterns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE PackageImports #-}
{-# LANGUAGE ScopedTypeVariables #-}
module Snap.Internal.Http.Parser.Benchmark
( benchmarks )
where
import Control.Monad
import qualified Criterion.Main as C
import qualified Data.ByteString as S
import Snap.Internal.Http.Parser.Data
import Snap.Internal.Http.Server.Parser
import qualified System.IO.Streams as Streams
parseGet :: S.ByteString -> IO ()
parseGet s = do
!_ <- Streams.fromList [s] >>= parseRequest
return $! ()
benchmarks :: C.Benchmark
benchmarks = C.bgroup "parser"
[ C.bench "firefoxget" $ C.whnfIO $! replicateM_ 1000
$! parseGet parseGetData
]
|