Extensive benchmark suite for containers package.

Latest on Hackage:

This package is not currently in any snapshots. If you're interested in using it, we recommend adding it to Stackage Nightly. Doing so will make builds more reliable, and allow to host generated Haddocks.

BSD3 licensed by Milan Straka
Maintained by
This package consists of a thorough benchmark for a containers package.

Quick start
To benchmark the installed version of containers, just do

cd scripts
sh installed-containers none


The benchmark is executed using scripts in scripts directory. The main
executable is, which is given several arguments:
name_of_the_benchmark -- date is added to it
containers_repo -- repo with containers, write 'none' for
-- system containers library
cabal_configure_opts -- optional flags passed to cabal configure

The just calls other scripts: containers_repo cabal_configure_opts -- builds the benchmark name_of_the_benchmark -- run built benchmark name_of_benchmark -- collect all results in one .csv file

Other scripts: < name_of_csv -- formats the csv file for viewing base_csv diff_csv -- generate csv with comparison of two tests base_csv diff_csv -- formats the result of for viewing containers_repo ghc_repo result_csv
-- Compiles the GHC repo with given containers and store results
-- the size of GHC and the memory allocation results of performance tests
-- are stored. These tests were once a regression, so we monitor them.
-- The GHC repo must be already booted and configured.

Which implementation to benchmark

The benchmark can use system-installed containers package or any given repo.
Because the criterion package used for benchmarking is using containers
internally, we cannot safely expose the benchmarked implementation as
Data.Map and others. Therefore we benchmark Container.{Map,Set,IntMap,IntSet}.
The scripts/ and scripts/ scripts
chooses which implementation of containers is benchmarked.

Benchmark design

Various input data are provided by InputData/*

Various benchmark methods are provided by Benchmar/*

As the different combinations of input data and containers result in different
type signatures, we use CPP extension to put the input data and benchmark
methods into one source file and let GHC to type-check for each combination of
input data and container. This happens in Variants/*


= Version, 2011-11-28 =
* Updates for containers

= Version, 2011-04-19 =
* Convert the repository to Git.

= Version, 2010-12-06 =
* Add CHANGES file to the cabal file.

= Version, 2010-12-06 =
* Fixed sed program in scripts/
to work on Mac.

= Version 1.0, 2010-10-31 =
* Initial upload
Used by 1 package:
comments powered byDisqus