-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Micro-benchmarking with detailed statistics. -- -- Benchmarks actions and produces statistics such as min, mean, median, -- standard deviation, and max execution time. Also computes execution -- time percentiles. Comes with functions to pretty-print the results. @package benchpress @version 0.2 -- | Benchmarks actions and produces statistics such as min, mean, median, -- standard deviation, and max execution time. Also computes execution -- time percentiles. Comes with functions to pretty-print the results. -- -- Here's an example showing a benchmark of copying a file: -- --
-- import qualified Data.ByteString as B -- import System.IO -- import Test.BenchPress -- -- inpath, outpath :: String -- inpath = "/tmp/infile" -- outpath = "/tmp/outfile" -- -- blockSize :: Int -- blockSize = 4 * 1024 -- -- copyUsingByteString :: Handle -> Handle -> IO () -- copyUsingByteString inf outf = go -- where -- go = do -- bs <- B.hGet inf blockSize -- let numRead = B.length bs -- if numRead > 0 -- then B.hPut outf bs >> go -- else return () -- -- main :: IO () -- main = bench 100 $ do -- inf <- openBinaryFile inpath ReadMode -- outf <- openBinaryFile outpath WriteMode -- copyUsingByteString inf outf -- hClose outf -- hClose inf --module Test.BenchPress -- | benchmark iters setup teardown action runs action -- iters times measuring the execution time of each run. -- setup and teardown are run before and after each run -- respectively. teardown will be run even if action -- raises an exception. benchmark :: Int -> IO a -> (a -> IO b) -> (a -> IO c) -> IO Stats -- | Convenience function that runs a benchmark using benchmark and -- prints timing statistics. Writes output to standard output. bench :: Int -> IO a -> IO () -- | Convenience function that runs several benchmarks using -- benchmark and prints a timing statistics summary. Each -- benchmark has an associated label that is used to identify the -- benchmark in the printed results. Writes output to standard output. benchMany :: Int -> [(String, IO a)] -> IO () -- | Timing statistics for the benchmark. All measured times are given in -- milliseconds. data Stats Stats :: Double -> Double -> Double -> Double -> Double -> [(Int, Double)] -> Stats -- | Shortest execution time. min :: Stats -> Double -- | Average execution time. mean :: Stats -> Double -- | Execution time standard deviation. stddev :: Stats -> Double -- | Median execution time. median :: Stats -> Double -- | Longest execution time. max :: Stats -> Double -- | Execution time divided into percentiles. The first component of the -- pair is the percentile given as an integer between 0 and 100, -- inclusive. The second component is the execution time of the slowest -- iteration within the percentile. percentiles :: Stats -> [(Int, Double)] instance Eq Stats instance Show Stats