Consolidate cryptonite benchmark code

Enables `cabal bench' or `stack bench' to run benchmarks
that depend only on cryptonite.
This commit is contained in:
Olivier Chéron 2017-03-22 19:14:45 +01:00
parent 2d25b27042
commit 762f2d9032
3 changed files with 33 additions and 19 deletions

View File

@ -4,23 +4,22 @@ module Main where
import Criterion.Main import Criterion.Main
import "cryptonite" Crypto.Hash import Crypto.Cipher.AES
import "cryptonite" Crypto.Error import Crypto.Cipher.Blowfish
import "cryptonite" Crypto.Cipher.DES import qualified Crypto.Cipher.ChaChaPoly1305 as CP
import "cryptonite" Crypto.Cipher.AES import Crypto.Cipher.DES
import "cryptonite" Crypto.Cipher.Blowfish import Crypto.Cipher.Types
import "cryptonite" Crypto.Cipher.Types import Crypto.Error
import qualified "cryptonite" Crypto.Cipher.ChaChaPoly1305 as CP import Crypto.Hash
import qualified Crypto.KDF.PBKDF2 as PBKDF2
import qualified "cryptonite" Crypto.KDF.PBKDF2 as PBKDF2 import qualified Crypto.PubKey.ECC.Types as ECC
import qualified Crypto.PubKey.ECC.Prim as ECC
import qualified "cryptonite" Crypto.PubKey.ECC.Types as ECC
import qualified "cryptonite" Crypto.PubKey.ECC.Prim as ECC
import Data.ByteArray (ByteArray)
import Data.ByteArray (ByteArray)
import qualified Data.ByteString as B import qualified Data.ByteString as B
import Number.F2m
benchHash = benchHash =
[ [
] ]
@ -127,4 +126,5 @@ main = defaultMain
, bgroup "AE" benchAE , bgroup "AE" benchAE
, bgroup "pbkdf2" benchPBKDF2 , bgroup "pbkdf2" benchPBKDF2
, bgroup "ECC" benchECC , bgroup "ECC" benchECC
, bgroup "F2m" benchF2m
] ]

View File

@ -1,18 +1,18 @@
{-# LANGUAGE PackageImports #-} {-# LANGUAGE PackageImports #-}
module Main where module Number.F2m (benchF2m) where
import Criterion.Main import Criterion.Main
import System.Random import System.Random
import "cryptonite" Crypto.Number.Basic (log2) import Crypto.Number.Basic (log2)
import "cryptonite" Crypto.Number.F2m import Crypto.Number.F2m
genInteger :: Int -> Int -> Integer genInteger :: Int -> Int -> Integer
genInteger salt bits genInteger salt bits
= head = head
. dropWhile ((< bits) . log2) . dropWhile ((< bits) . log2)
. scanl (\a r -> a * 2^31 + abs r) 0 . scanl (\a r -> a * 2^(31 :: Int) + abs r) 0
. randoms . randoms
. mkStdGen . mkStdGen
$ salt + bits $ salt + bits
@ -45,7 +45,7 @@ benchInv bits = bench (show bits) $ nf (invF2m m) a
bitsList :: [Int] bitsList :: [Int]
bitsList = [64, 128, 256, 512, 1024, 2048] bitsList = [64, 128, 256, 512, 1024, 2048]
main = defaultMain benchF2m =
[ bgroup "modF2m" $ map benchMod bitsList [ bgroup "modF2m" $ map benchMod bitsList
, bgroup "mulF2m" $ map benchMul bitsList , bgroup "mulF2m" $ map benchMul bitsList
, bgroup "squareF2m" $ map benchSquare bitsList , bgroup "squareF2m" $ map benchSquare bitsList

View File

@ -382,3 +382,17 @@ Test-Suite test-cryptonite
, cryptonite , cryptonite
ghc-options: -Wall -fno-warn-orphans -fno-warn-missing-signatures -fno-warn-unused-imports -rtsopts ghc-options: -Wall -fno-warn-orphans -fno-warn-missing-signatures -fno-warn-unused-imports -rtsopts
default-language: Haskell2010 default-language: Haskell2010
Benchmark bench-cryptonite
type: exitcode-stdio-1.0
hs-source-dirs: benchs
Main-is: Bench.hs
Other-modules: Number.F2m
Build-Depends: base >= 3 && < 5
, bytestring
, memory
, criterion
, random
, cryptonite
ghc-options: -Wall -fno-warn-missing-signatures
default-language: Haskell2010