Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Run Haskell benchmarks on inputs of varying size

Often I’d like to compare the runtime performance of multiple implementations of the same function. For individual inputs, criterion is a good tool.

But what is an easy way to plot the performance of the code over varying input size, e.g. to see the algorithmic complexity?

Ideally, I pass the library a value of type Benchmarkable r => [(String, Int -> r)], i.e. a list of size-dependent benchmarks, and the library will automatically find a the sensible input range for each value and creates a nice plot from it.

like image 583
Joachim Breitner Avatar asked Jul 02 '13 09:07

Joachim Breitner


1 Answers

e.g. to see the algorithmic complexity?

There's a package for that:

http://hackage.haskell.org/package/complexity

However, I typically use QuickCheck to drive testing at random data sizes, then plot the result.

like image 159
Don Stewart Avatar answered Oct 05 '22 08:10

Don Stewart