microbench description target probes target with different parameters
until it's ran enough iterations to have a good estimate at the rate per
second of the operation. description is a textual description of the
thing being benchmarked. Outputs to stdout.
Modulemicrobench-0.1Haskell98
Microbench
Microbenchmarking can be used to compare the speed of different approaches to the same operation. Since most code is very fast, to get accurate timing information you must run the operation many times and then divide to get the time per operation.
This library manages the microbenchmarking process: it finds how many iterations of a function are needed to get a good timing estimate per iteration and prints out a human-readable "Your code takes n nanoseconds to run, and can run n times per second".
The only function microbench takes a function that expects an integer parameter (which is the quantity you're trying to measure), and probes the function with increasing parameters until enough time has elapsed to get a good measurement.
This may be better understood by some example code:
sum1 n = sum [1..n]
sum2 n = foldl (+) 0 [1..n]
main = do
microbench "Sum using sum" sum1
microbench "Sum using foldl" sum2When run, sum1 and sum2 are called with varying values of n.
The output, then, is an estimate of how many integers these
approaches could sum per second.
microbench also accepts a parameter of type IO () for
benchmarking. It does the same probing process, but manages running
the operation in a loop.
- 1 class
- 1 value
- Packagemicrobench-0.1
- Exports2
- LanguageHaskell98
- LicenceBSD-3-Clause
- SourceMicrobench.hs
Microbenchmarkable computations. Be very wary of adding your own instances of this class, as it's difficult to force GHC to re-evaluate code in a way that makes benchmarking easy.
Instances3Microbenchable
Microbenchable (IO ())Defined in microbench-0.1 · MicrobenchMicrobenchable (Int -> IO ())Defined in microbench-0.1 · MicrobenchMicrobenchable (Int -> a)Defined in microbench-0.1 · Microbench