Use criterion 'env' function

This commit is contained in:
Olivier Chéron 2017-07-11 20:31:00 +02:00
parent 5e354f9bfc
commit 2a60551e34

View File

@ -1,4 +1,3 @@
{-# LANGUAGE PackageImports #-}
{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ExistentialQuantification #-} {-# LANGUAGE ExistentialQuantification #-}
module Main where module Main where
@ -22,26 +21,22 @@ import Crypto.Random
import Data.ByteArray (ByteArray, Bytes) import Data.ByteArray (ByteArray, Bytes)
import qualified Data.ByteString as B import qualified Data.ByteString as B
import System.IO.Unsafe (unsafePerformIO)
import Number.F2m import Number.F2m
data HashAlg = forall alg . HashAlgorithm alg => HashAlg alg data HashAlg = forall alg . HashAlgorithm alg => HashAlg alg
benchHash = benchHash =
[ bgroup "1KB" $ map (doHashBench oneKB) hashAlgs [ env oneKB $ \b -> bgroup "1KB" $ map (doHashBench b) hashAlgs
, bgroup "1MB" $ map (doHashBench oneMB) hashAlgs , env oneMB $ \b -> bgroup "1MB" $ map (doHashBench b) hashAlgs
] ]
where where
doHashBench b (name, HashAlg alg) = bench name $ nf (hashWith alg) b doHashBench b (name, HashAlg alg) = bench name $ nf (hashWith alg) b
oneKB :: Bytes oneKB :: IO Bytes
oneKB = unsafePerformIO (getRandomBytes 1024) oneKB = getRandomBytes 1024
{-# NOINLINE oneKB #-}
oneMB :: Bytes oneMB :: IO Bytes
oneMB = unsafePerformIO (getRandomBytes $ 1024 * 1024) oneMB = getRandomBytes $ 1024 * 1024
{-# NOINLINE oneMB #-}
hashAlgs = hashAlgs =
[ ("MD2", HashAlg MD2) [ ("MD2", HashAlg MD2)