packages feed

ppad-base16-0.1.0: bench/Main.hs

{-# 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)
  ]