lzlib-0.3.0.2: 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 file $ \ f ->
bgroup "roundtrip (decompress/compress)"
[ bench "lzlib (lzlib)" $ nf roundtrip f
]
, bgroup "unpack (decompress/compress)"
[ bench "lzlib" $ nfIO unpack ]
, env decompressed $ \ f ->
bgroup "roundtrip' (compress/decompress)"
[ bench "lzlib (lzlib)" $ nf roundtrip' f
]
, bgroup "unpack' (compress/decompress)"
[ bench "lzlib" $ nfIO unpack' ]
]
where file = BSL.readFile "lzlib-1.10.tar.lz"
decompressed = BSL.readFile "lzlib-1.10.tar"