packages feed

damnpacket-0.1.0.0: benchmarks/parse.hs

{-# OPTIONS_GHC -fno-warn-orphans #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE StandaloneDeriving #-}

import Control.Exception (evaluate)
import Criterion.Main
import Text.Damn.Packet
import Data.Map          (fromList)
import Data.Monoid
import Data.Text         (Text)

main :: IO ()
main = do
    let mypkt = samplePacket
    evaluate mypkt
    defaultMain [
          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
        , bench "render"           $ nf render mypkt
      ]

cmd, cmdParam, cmdArgs, cmdParamArgs,
    cmdBody, cmdParamBody, cmdArgsBody, cmdParamArgsBody :: Text
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"

samplePacket :: Packet
samplePacket = Packet { pktCommand = "property"
                      , pktParameter = Just "chat:WriteRoom"
                      , pktArgs = fromList [("p", "title"), ("body", "someBody")]
                      , pktBody = Just "this is the property"
                      }