Use criterion 'env' function
This commit is contained in:
parent
5e354f9bfc
commit
2a60551e34
@ -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)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user