OddWord-1.0.2.0: bench/Main.hs
{-# LANGUAGE ScopedTypeVariables, DataKinds #-}
module Main where
import Data.Proxy
import Data.Typeable
import Data.Word
import Data.Word.Odd
import Criterion.Main
testAddMul :: (Num a) => a -> a
testAddMul n = 2*n*n + 3*n + 4
testEquals :: (Eq a, Num a) => a -> Bool
testEquals n = n == 7 || n == 11 || n == 13
benchNum :: forall a. (Eq a, Num a, Typeable a) => a -> Benchmark
benchNum x =
bgroup (show $ typeRep (Proxy :: Proxy a)) [
bench "addMul" $ whnf testAddMul x,
bench "equals" $ whnf testEquals x
]
main :: IO ()
main =
defaultMain [
benchNum (1::Word),
benchNum (1::Word20),
benchNum (1::(OddWord Word32 (Lit 20)))
]