module Main (main) where import Codec.Lz4 import Criterion.Main import qualified Data.ByteString.Lazy as BSL import System.FilePath (()) import System.IO.Temp (withSystemTempDirectory) decompressDump :: FilePath -> FilePath -> IO () decompressDump dir fp' = BSL.writeFile (dir "dump.tar") =<< (decompress <$> BSL.readFile fp') compressDump :: FilePath -> FilePath -> IO () compressDump dir fp' = BSL.writeFile (dir "dump.tar.lz4") =<< (compress <$> BSL.readFile fp') main :: IO () main = withSystemTempDirectory "lz4" $ \dir -> defaultMain [ bgroup "decompress/dump" [ bench "lz4" $ nfIO (decompressDump dir "valgrind-3.15.0.tar.lz4") , bench "lz4" $ nfIO (decompressDump dir "llvm-9.0.0.src.tar.lz4") ] , env lz4Files $ \ ~(v, l) -> bgroup "decompress" [ bench "lz4" $ nf decompress v , bench "lz4" $ nf decompress l ] , bgroup "compress/dump" [ bench "lz4" $ nfIO (compressDump dir "valgrind-3.15.0.tar") , bench "lz4" $ nfIO (compressDump dir "llvm-9.0.0.src.tar") ] ] where lz4Files = (,) <$> valgrindFile <*> llvmFile valgrindFile = BSL.readFile "valgrind-3.15.0.tar.lz4" llvmFile = BSL.readFile "llvm-9.0.0.src.tar.lz4"