criterion-0.6.2.0: Robust, reliable performance measurement and analysis

PortabilityGHC
Stabilityexperimental
Maintainerbos@serpentine.com
Safe HaskellNone

Criterion

Description

Core benchmarking code.

Synopsis

Documentation

class Benchmarkable a whereSource

A benchmarkable function or action.

Methods

runSource

Arguments

:: a

The function or action to benchmark.

-> Int

The number of times to run or evaluate it.

-> IO () 

Run a function or action the specified number of times.

data Benchmark Source

A benchmark may consist of either a single Benchmarkable item with a name, created with bench, or a (possibly nested) group of Benchmarks, created with bgroup.

Instances

data Pure Source

A container for a pure function to benchmark, and an argument to supply to it each time it is evaluated.

Instances

nf :: NFData b => (a -> b) -> a -> PureSource

Apply an argument to a function, and evaluate the result to head normal form (NF).

whnf :: (a -> b) -> a -> PureSource

Apply an argument to a function, and evaluate the result to weak head normal form (WHNF).

nfIO :: NFData a => IO a -> IO ()Source

Perform an action, then evaluate its result to head normal form. This is particularly useful for forcing a lazy IO action to be completely performed.

whnfIO :: IO a -> IO ()Source

Perform an action, then evaluate its result to weak head normal form (WHNF). This is useful for forcing an IO action whose result is an expression to be evaluated down to a more useful value.

benchSource

Arguments

:: Benchmarkable b 
=> String

A name to identify the benchmark.

-> b 
-> Benchmark 

Create a single benchmark.

bgroupSource

Arguments

:: String

A name to identify the group of benchmarks.

-> [Benchmark]

Benchmarks to group under this name.

-> Benchmark 

Group several benchmarks together under a common name.

runBenchmark :: Benchmarkable b => Environment -> b -> Criterion SampleSource

Run a single benchmark, and return timings measured when executing it.

runAndAnalyseSource

Arguments

:: (String -> Bool)

A predicate that chooses whether to run a benchmark by its name.

-> Environment 
-> Benchmark 
-> Criterion () 

Run, and analyse, one or more benchmarks.