lz4-hs-0.1.5.2: bench/Bench.hs
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'
decompressFile :: FilePath -> IO ()
decompressFile fp' = forceBSL . decompress =<< BSL.readFile fp'
where forceBSL = (`seq` mempty) . last . BSL.toChunks
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")
]
-- file writes on linux are slow?
, bgroup "decompress/file"
[ bench "lz4" $ nfIO (decompressFile "valgrind-3.15.0.tar.lz4")
, bench "lz4" $ nfIO (decompressFile "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"