snap-server-1.1.2.1: benchmark/Snap/Internal/Http/Parser/Benchmark.hs
{-# 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
]