{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE PackageImports #-}
module Main where
import Criterion.Main
import qualified Data.ByteString as BS
import qualified "ppad-base16" Data.ByteString.Base16 as B16
import qualified "base16-bytestring" Data.ByteString.Base16 as R0
import qualified "base16" Data.ByteString.Base16 as R1
main :: IO ()
main = defaultMain [
minimal_encode
, minimal_decode
]
minimal_encode :: Benchmark
minimal_encode = bench "ppad-base16" $ nf B16.encode (BS.replicate 1024 0x00)
minimal_decode :: Benchmark
minimal_decode = bench "ppad-base16" $ nf B16.decode
(B16.encode (BS.replicate 512 0x00))
encode :: Benchmark
encode = bgroup "encode" [
bench "ppad-base16" $ nf B16.encode (BS.replicate 1024 0x00)
, bench "base16-bytestring" $ nf R0.encode (BS.replicate 1024 0x00)
, bench "base16" $ nf R1.encodeBase16' (BS.replicate 1024 0x00)
]
decode :: Benchmark
decode = bgroup "decode" [
bench "ppad-base16" $ nf B16.decode
(B16.encode (BS.replicate 512 0x00))
, bench "base16-bytestring" $ nf R0.decode
(B16.encode (BS.replicate 512 0x00))
, bench "base16" $ nf R1.decodeBase16Untyped
(B16.encode (BS.replicate 512 0x00))
]
decode_various :: Benchmark
decode_various = bgroup "base16" [
bench "1024B input" $ nf B16.decode (B16.encode (BS.replicate 512 0x00))
, bench "1026B input" $ nf B16.decode (B16.encode (BS.replicate 513 0x00))
, bench "1028B input" $ nf B16.decode (B16.encode (BS.replicate 514 0x00))
, bench "1030B input" $ nf B16.decode (B16.encode (BS.replicate 515 0x00))
, bench "1032B input" $ nf B16.decode (B16.encode (BS.replicate 516 0x00))
, bench "1034B input" $ nf B16.decode (B16.encode (BS.replicate 517 0x00))
, bench "1036B input" $ nf B16.decode (B16.encode (BS.replicate 518 0x00))
, bench "1038B input" $ nf B16.decode (B16.encode (BS.replicate 519 0x00))
, bench "1040B input" $ nf B16.decode (B16.encode (BS.replicate 520 0x00))
]
encode_various :: Benchmark
encode_various = bgroup "base16" [
bench "1024B input" $ nf B16.encode (BS.replicate 1024 0x00)
, bench "1023B input" $ nf B16.encode (BS.replicate 1023 0x00)
, bench "1022B input" $ nf B16.encode (BS.replicate 1022 0x00)
]