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