packages feed

damnpacket-0.2.0: benchmarks/parse.hs

{-# OPTIONS_GHC -fno-warn-orphans #-}
{-# OPTIONS_GHC -fno-warn-unused-do-bind #-}
{-# LANGUAGE OverloadedStrings #-}

import Criterion.Main
import Text.Damn.Packet
import Data.Maybe        (fromJust)
import Data.Monoid
import Data.ByteString   (ByteString)

main :: IO ()
main = defaultMain [
        bgroup "Parsing" [
            bench "phony"            $ nf parse' ""
          , bench "cmd"              $ nf parse' cmd
          , bench "cmdParam"         $ nf parse' cmdParam
          , bench "cmdArgs"          $ nf parse' cmdArgs
          , bench "cmdParamArgs"     $ nf parse' cmdParamArgs
          , bench "cmdBody"          $ nf parse' cmdBody
          , bench "cmdParamBody"     $ nf parse' cmdParamBody
          , bench "cmdArgsBody"      $ nf parse' cmdArgsBody
          , bench "cmdParamArgsBody" $ nf parse' cmdParamArgsBody ]
      , bgroup "Rendering" [
            bench "cmd"              $ nf render cmdPkt
          , bench "cmdParam"         $ nf render cmdParamPkt
          , bench "cmdArgs"          $ nf render cmdArgsPkt
          , bench "cmdParamArgs"     $ nf render cmdParamArgsPkt
          , bench "cmdBody"          $ nf render cmdBodyPkt
          , bench "cmdParamBody"     $ nf render cmdParamBodyPkt
          , bench "cmdArgsBody"      $ nf render cmdArgsBodyPkt
          , bench "cmdParamArgsBody" $ nf render cmdParamArgsBodyPkt ]
      ]

cmd, cmdParam, cmdArgs, cmdParamArgs,
    cmdBody, cmdParamBody, cmdArgsBody, cmdParamArgsBody :: ByteString
cmd = "ping"
cmdParam = "ping foobar"
cmdArgs = "ping\nfoo=bar\nbaz=qux"
cmdParamArgs = "ping foobar\nfoo=bar\nbaz=qux"
cmdBody = cmd <> "\n\nfoobar"
cmdParamBody = cmdParam <> "\n\nfoobar"
cmdArgsBody = cmdArgs <> "\n\nfoobar"
cmdParamArgsBody = cmdParamArgs <> "\n\nfoobar"

cmdPkt, cmdParamPkt, cmdArgsPkt, cmdParamArgsPkt, cmdBodyPkt,
    cmdParamBodyPkt, cmdArgsBodyPkt, cmdParamArgsBodyPkt :: Packet
cmdPkt = fromJust $! parse' cmd
cmdParamPkt = fromJust $! parse' cmdParam
cmdArgsPkt = fromJust $! parse' cmdArgs
cmdParamArgsPkt = fromJust $! parse' cmdParamArgs
cmdBodyPkt = fromJust $! parse' cmdBody
cmdParamBodyPkt = fromJust $! parse' cmdParamBody
cmdArgsBodyPkt = fromJust $! parse' cmdArgsBody
cmdParamArgsBodyPkt = fromJust $! parse' cmdParamArgsBody