ron-0.1: bench/Main.hs
{-# LANGUAGE NamedFieldPuns #-}
import RON.Internal.Prelude
import Control.DeepSeq (force)
import Control.Exception (evaluate)
import Criterion (bench, nf)
import Criterion.Main (defaultConfig, defaultMainWith)
import Criterion.Types (timeLimit)
import RON.Text (parseWireFrames, serializeWireFrames)
import RON.Types (Op (..), RawOp (..), WireChunk (Raw))
import qualified RON.UUID as UUID
main :: IO ()
main = do
void . evaluate $ force serialized
defaultMainWith
defaultConfig{timeLimit = 1}
[bench (show n) $ nf parseWireFrames batch | (n, batch) <- serialized]
where
rawop = RawOp{opType = UUID.zero, opObject = UUID.zero, op}
op = Op{opEvent = UUID.zero, opRef = UUID.zero, opPayload = []}
frame n = replicate n $ Raw rawop
serialized =
[ (n :: Int, serializeWireFrames $ replicate 100 $ frame n)
| i <- [1 .. 10], let n = 100 * i
]