packages feed

hwsl2-0.3.1.0: src/Data/Hash/SL2/Benchmark.hs

import Data.Hash.SL2

import Data.List (foldl')

import Control.Parallel.Strategies

import qualified Data.ByteString as B
import qualified Crypto.Hash.SHA256 as SHA256
import qualified Crypto.Hash.SHA512 as SHA512

import Criterion.Main

bs1M = B.pack $ take (1 * 1024 * 1024) $ cycle [0..255]
bs2M = B.pack $ take (2 * 1024 * 1024) $ cycle [0..255]
bs4M = B.pack $ take (4 * 1024 * 1024) $ cycle [0..255]

main = defaultMain
  [ bench "hwsl2 append" $ whnf (append unit) bs4M
  , bench "hwsl2 prepend" $ whnf (flip prepend unit) bs4M
  , bench "hwsl2 append parallel" $ whnf (concatAll . (parMap rpar hash)) [bs1M, bs1M, bs1M, bs1M]
  , bench "sha256" $ whnf SHA256.hash bs4M
  , bench "sha512" $ whnf SHA512.hash bs4M
  ]