packages feed

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
  ]