add bench mark
This commit is contained in:
parent
4bd98c80e0
commit
97aa64e0e4
59
benchs/PBKDF2.hs
Normal file
59
benchs/PBKDF2.hs
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
|
{-# LANGUAGE ScopedTypeVariables #-}
|
||||||
|
{-# LANGUAGE PackageImports #-}
|
||||||
|
module Main where
|
||||||
|
|
||||||
|
import Criterion.Main
|
||||||
|
import Crypto.Hash.Algorithms as Crypto
|
||||||
|
import "cryptonite" Crypto.KDF.PBKDF2 as Crypto
|
||||||
|
import "fastpbkdf2" Crypto.KDF.PBKDF2 as Fast
|
||||||
|
import Data.ByteString as B
|
||||||
|
|
||||||
|
password :: ByteString
|
||||||
|
password = "password"
|
||||||
|
|
||||||
|
salt :: ByteString
|
||||||
|
salt = "salt"
|
||||||
|
|
||||||
|
runBench :: Int
|
||||||
|
-> (ByteString -> ByteString -> ByteString)
|
||||||
|
-> (ByteString -> ByteString -> ByteString)
|
||||||
|
-> (ByteString -> ByteString -> ByteString)
|
||||||
|
-> Benchmark
|
||||||
|
runBench iter cryptonite fastCryptonite fastBinding =
|
||||||
|
bgroup (show iter)
|
||||||
|
[ bench "cryptonite" $ whnf (cryptonite password) salt
|
||||||
|
, bench "cryptonite-fast" $ whnf (fastCryptonite password) salt
|
||||||
|
, bench "fastpbkdf2-hs" $ whnf (fastBinding password) salt
|
||||||
|
]
|
||||||
|
|
||||||
|
makeBench :: (Parameters -> ByteString -> ByteString -> ByteString)
|
||||||
|
-> (Parameters -> ByteString -> ByteString -> ByteString)
|
||||||
|
-> (ByteString -> ByteString -> Int -> Int -> ByteString)
|
||||||
|
-> [Benchmark]
|
||||||
|
makeBench cryptonite fastCryptonite fastBinding =
|
||||||
|
[ runBench 1
|
||||||
|
(cryptonite (Parameters 1 32))
|
||||||
|
(fastCryptonite (Parameters 1 32))
|
||||||
|
(\p s -> fastBinding p s 1 32)
|
||||||
|
, runBench 10000
|
||||||
|
(cryptonite (Parameters 10000 32))
|
||||||
|
(fastCryptonite (Parameters 10000 32))
|
||||||
|
(\p s -> fastBinding p s 10000 32)
|
||||||
|
]
|
||||||
|
|
||||||
|
main :: IO ()
|
||||||
|
main = defaultMain
|
||||||
|
[ bgroup "SHA1" $ makeBench
|
||||||
|
(Crypto.generate (Crypto.prfHMAC Crypto.SHA1))
|
||||||
|
(Crypto.fastPBKDF2_SHA1)
|
||||||
|
(Fast.fastpbkdf2_hmac_sha1)
|
||||||
|
, bgroup "SHA256" $ makeBench
|
||||||
|
(Crypto.generate (Crypto.prfHMAC Crypto.SHA256))
|
||||||
|
(Crypto.fastPBKDF2_SHA256)
|
||||||
|
(Fast.fastpbkdf2_hmac_sha256)
|
||||||
|
, bgroup "SHA512" $ makeBench
|
||||||
|
(Crypto.generate (Crypto.prfHMAC Crypto.SHA512))
|
||||||
|
(Crypto.fastPBKDF2_SHA512)
|
||||||
|
(Fast.fastpbkdf2_hmac_sha512)
|
||||||
|
]
|
||||||
Loading…
Reference in New Issue
Block a user