urbit-hob-0.3.0: bench/Ob.hs
{-# LANGUAGE OverloadedStrings #-}
module Main where
import Control.DeepSeq
import Criterion.Main
import qualified Urbit.Ob as Ob
instance NFData Ob.Patp
patpGroup :: Benchmark
patpGroup = bgroup "patp" [
bench "~zod" $
nf Ob.patp 0x0000
, bench "~marzod" $
nf Ob.patp 0x0100
, bench "~dapnep-ronmyl" $
nf Ob.patp 0x00010000
, bench "~fipfes-fipfes-dostec-risfen" $
nf Ob.patp 0xFFFFFFFFFFFFFFFF
, bench "~fipfes-fipfes-fipfes-fipfes--fipfes-fipfes-fipfes-fipfes" $
nf Ob.patp 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
]
fromPatpGroup :: Benchmark
fromPatpGroup = bgroup "fromPatp" [
bench "~zod" $
whnf Ob.fromPatp (Ob.patp 0x0000)
, bench "~marzod" $
whnf Ob.fromPatp (Ob.patp 0x0100)
, bench "~dapnep-ronmyl" $
whnf Ob.fromPatp (Ob.patp 0x00010000)
, bench "~fipfes-fipfes-dostec-risfen" $
whnf Ob.fromPatp (Ob.patp 0xFFFFFFFFFFFFFFFF)
, bench "~fipfes-fipfes-fipfes-fipfes--fipfes-fipfes-fipfes-fipfes" $
whnf Ob.fromPatp (Ob.patp 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF)
]
renderGroup :: Benchmark
renderGroup = bgroup "renderPatp" [
bench "~zod" $
nf Ob.renderPatp (Ob.patp 0x0000)
, bench "~marzod" $
nf Ob.renderPatp (Ob.patp 0x0100)
, bench "~dapnep-ronmyl" $
nf Ob.renderPatp (Ob.patp 0x00010000)
, bench "~fipfes-fipfes-dostec-risfen" $
nf Ob.renderPatp (Ob.patp 0xFFFFFFFFFFFFFFFF)
, bench "~fipfes-fipfes-fipfes-fipfes--fipfes-fipfes-fipfes-fipfes" $
nf Ob.renderPatp (Ob.patp 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF)
]
parseGroup :: Benchmark
parseGroup = bgroup "parsePatp" [
bench "~zod" $
nf Ob.parsePatp "~zod"
, bench "~marzod" $
nf Ob.parsePatp "~marzod"
, bench "~dapnep-ronmyl" $
nf Ob.parsePatp "~dapnep-ronmyl"
, bench "~fipfes-fipfes-dostec-risfen" $
nf Ob.parsePatp "~fipfes-fipfes-dostec-risfen"
, bench "~fipfes-fipfes-fipfes-fipfes--fipfes-fipfes-fipfes-fipfes" $
nf Ob.parsePatp "~fipfes-fipfes-fipfes-fipfes--fipfes-fipfes-fipfes-fipfes"
]
main :: IO ()
main = defaultMain [
patpGroup
, fromPatpGroup
, renderGroup
, parseGroup
]