data-msgpack-0.0.7: bench/Data/MessagePack/IntBench.hs
module Data.MessagePack.IntBench (suite) where
import Criterion.Main (Benchmark, bench, bgroup, nf)
import qualified Data.ByteString.Lazy as LBS
import Data.Int (Int64)
import Data.MessagePack
packInt :: Int64 -> LBS.ByteString
packInt = pack
unpackInt :: LBS.ByteString -> Maybe Int64
unpackInt = unpack
suite :: [Benchmark]
suite =
[ bgroup "pack" -- should be constant time
[ bench "0x1" $ nf packInt 0x1
, bench "0x10" $ nf packInt 0x10
, bench "0x100" $ nf packInt 0x100
, bench "0x1000" $ nf packInt 0x1000
, bench "0x10000" $ nf packInt 0x10000
, bench "0x100000" $ nf packInt 0x100000
, bench "0x1000000" $ nf packInt 0x1000000
, bench "0x10000000" $ nf packInt 0x10000000
, bench "0x100000000" $ nf packInt 0x100000000
, bench "0x1000000000" $ nf packInt 0x1000000000
, bench "0x10000000000" $ nf packInt 0x10000000000
, bench "0x100000000000" $ nf packInt 0x100000000000
, bench "0x1000000000000" $ nf packInt 0x1000000000000
, bench "0x10000000000000" $ nf packInt 0x10000000000000
, bench "0x100000000000000" $ nf packInt 0x100000000000000
, bench "0x1000000000000000" $ nf packInt 0x1000000000000000
, bench "-0x1" $ nf packInt (-0x1 )
, bench "-0x10" $ nf packInt (-0x10 )
, bench "-0x100" $ nf packInt (-0x100 )
, bench "-0x1000" $ nf packInt (-0x1000 )
, bench "-0x10000" $ nf packInt (-0x10000 )
, bench "-0x100000" $ nf packInt (-0x100000 )
, bench "-0x1000000" $ nf packInt (-0x1000000 )
, bench "-0x10000000" $ nf packInt (-0x10000000 )
, bench "-0x100000000" $ nf packInt (-0x100000000 )
, bench "-0x1000000000" $ nf packInt (-0x1000000000 )
, bench "-0x10000000000" $ nf packInt (-0x10000000000 )
, bench "-0x100000000000" $ nf packInt (-0x100000000000 )
, bench "-0x1000000000000" $ nf packInt (-0x1000000000000 )
, bench "-0x10000000000000" $ nf packInt (-0x10000000000000 )
, bench "-0x100000000000000" $ nf packInt (-0x100000000000000 )
, bench "-0x1000000000000000" $ nf packInt (-0x1000000000000000)
]
, bgroup "unpack" -- should be constant time
[ bench "0x1" $ nf unpackInt (packInt 0x1 )
, bench "0x10" $ nf unpackInt (packInt 0x10 )
, bench "0x100" $ nf unpackInt (packInt 0x100 )
, bench "0x1000" $ nf unpackInt (packInt 0x1000 )
, bench "0x10000" $ nf unpackInt (packInt 0x10000 )
, bench "0x100000" $ nf unpackInt (packInt 0x100000 )
, bench "0x1000000" $ nf unpackInt (packInt 0x1000000 )
, bench "0x10000000" $ nf unpackInt (packInt 0x10000000 )
, bench "0x100000000" $ nf unpackInt (packInt 0x100000000 )
, bench "0x1000000000" $ nf unpackInt (packInt 0x1000000000 )
, bench "0x10000000000" $ nf unpackInt (packInt 0x10000000000 )
, bench "0x100000000000" $ nf unpackInt (packInt 0x100000000000 )
, bench "0x1000000000000" $ nf unpackInt (packInt 0x1000000000000 )
, bench "0x10000000000000" $ nf unpackInt (packInt 0x10000000000000 )
, bench "0x100000000000000" $ nf unpackInt (packInt 0x100000000000000 )
, bench "0x1000000000000000" $ nf unpackInt (packInt 0x1000000000000000 )
, bench "-0x1" $ nf unpackInt (packInt (-0x1 ))
, bench "-0x10" $ nf unpackInt (packInt (-0x10 ))
, bench "-0x100" $ nf unpackInt (packInt (-0x100 ))
, bench "-0x1000" $ nf unpackInt (packInt (-0x1000 ))
, bench "-0x10000" $ nf unpackInt (packInt (-0x10000 ))
, bench "-0x100000" $ nf unpackInt (packInt (-0x100000 ))
, bench "-0x1000000" $ nf unpackInt (packInt (-0x1000000 ))
, bench "-0x10000000" $ nf unpackInt (packInt (-0x10000000 ))
, bench "-0x100000000" $ nf unpackInt (packInt (-0x100000000 ))
, bench "-0x1000000000" $ nf unpackInt (packInt (-0x1000000000 ))
, bench "-0x10000000000" $ nf unpackInt (packInt (-0x10000000000 ))
, bench "-0x100000000000" $ nf unpackInt (packInt (-0x100000000000 ))
, bench "-0x1000000000000" $ nf unpackInt (packInt (-0x1000000000000 ))
, bench "-0x10000000000000" $ nf unpackInt (packInt (-0x10000000000000 ))
, bench "-0x100000000000000" $ nf unpackInt (packInt (-0x100000000000000 ))
, bench "-0x1000000000000000" $ nf unpackInt (packInt (-0x1000000000000000))
]
]