lzlib-0.3.0.0: bench/Bench.hs
module Main (main) where
import Codec.Lzip
import Criterion.Main
import qualified Data.ByteString.Lazy as BSL
import System.FilePath ((</>))
import System.IO.Temp (withSystemTempDirectory)
roundtrip :: BSL.ByteString -> BSL.ByteString
roundtrip = compress . decompress
roundtrip' :: BSL.ByteString -> BSL.ByteString
roundtrip' = decompress . compress
unpack :: IO ()
unpack = withSystemTempDirectory "lzlib" $
\fp -> BSL.writeFile (fp </> "lzlib.tar.lz") =<<
(roundtrip <$> BSL.readFile "lzlib-1.10.tar.lz")
unpack' :: IO ()
unpack' = withSystemTempDirectory "lzlib" $
\fp -> BSL.writeFile (fp </> "lzlib.tar") =<<
(roundtrip' <$> BSL.readFile "lzlib-1.10.tar")
main :: IO ()
main =
defaultMain [ env files $ \ ~(f, g) ->
bgroup "roundtrip"
[ bench "lzlib (lzlib)" $ nf roundtrip f
, bench "lzlib (gmp)" $ nf roundtrip g
]
, bgroup "unpack"
[ bench "lzlib" $ nfIO unpack ]
, env decompressed $ \f ->
bgroup "roundtrip'"
[ bench "lzlib" $ nf roundtrip' f ]
, bgroup "unpack"
[ bench "lzlib" $ nfIO unpack' ]
]
where file = BSL.readFile "lzlib-1.10.tar.lz"
bigFile = BSL.readFile "gmp-6.1.2.tar.lz"
files = (,) <$> file <*> bigFile
decompressed = BSL.readFile "lzlib-1.10.tar"