{-# LANGUAGE OverloadedStrings #-}
module Main where
import Criterion.Main
import qualified Crypto.Hash.RIPEMD160 as RIPEMD160
import qualified Data.ByteString as BS
import qualified Data.ByteString.Lazy as BL
main :: IO ()
main = defaultMain [
suite
]
suite :: Benchmark
suite = env setup $ \ ~(bs, bl) ->
bgroup "ppad-ripemd160" [
bgroup "RIPEMD160 (32B input)" [
bench "hash" $ whnf RIPEMD160.hash bs
, bench "hash_lazy" $ whnf RIPEMD160.hash_lazy bl
]
, bgroup "HMAC-RIPEMD160 (32B input)" [
bench "hmac" $ whnf (RIPEMD160.hmac "key") bs
, bench "hmac_lazy" $ whnf (RIPEMD160.hmac_lazy "key") bl
]
]
where
setup = do
let bs_32B = BS.replicate 32 0
bl_32B = BL.fromStrict bs_32B
pure (bs_32B, bl_32B)