packages feed

bytesmith-0.2.0.0: bench/Main.hs

{-# LANGUAGE BangPatterns #-}
{-# LANGUAGE TypeApplications #-}

import Data.Char (ord)
import Data.Primitive (ByteArray)
import Data.Word (Word8)
import Gauge.Main (defaultMain,bench,whnf)

import qualified Data.Bytes.Parser as P
import qualified Data.Bytes.Parser.Latin as Latin
import qualified GHC.Exts as Exts

main :: IO ()
main = defaultMain
  [ bench "decPositiveInteger" $ whnf
      (\x -> P.parseByteArray (Latin.decUnsignedInteger ()) x)
      encodedBigNumber
  ]

encodedBigNumber :: ByteArray
encodedBigNumber = stringToByteArray $ show $ id @Integer $
  246246357264327645234627753190240202405243024304504230544
  *
  732345623640035232405249305932503920593209520932095234651

stringToByteArray :: String -> ByteArray
stringToByteArray =
  Exts.fromList . map (fromIntegral @Int @Word8 . ord)