Performance measurements

To keep track of the run time performance of the most important tools of the toolset an automated process has been setup to perform benchmarks. These benchmarks also periodically performed on our build servers to measure how the performance changes over builds. If you have an account for our TeamCity servers you can view the results of these measurements here.

The details of the benchmarks are described below. To perform these benchmarks yourself, see the Setup section.


The run time of the following tools are currently being measured:


Case 1

Case 2













Each tool is used on a number of mCRL2 examples. The process performed depends on the tool, i.e, linearisation, state space exploration and model checking of the nodeadlock property. The following examples present in our repository are used to perform the benchmarks on:

  • academic/abp/abp.mcrl2

  • academic/allow/allow.mcrl2

  • academic/cabp/cabp.mcrl2

  • academic/dining/dining8.mcrl2

  • games/clobber/clobber.mcrl2

  • games/domineering/domineering.mcrl2

  • games/magic_square/magic_square.mcrl2

  • games/othello/othello.mcrl2

  • industrial/1394/1394-fin.mcrl2

  • industrial/brp/brp.mcrl2

  • industrial/chatbox/chatbox.mcrl2

  • industrial/lift/lift3-final.mcrl2

  • industrial/lift/lift3-init.mcrl2

Besides tool benchmarks there are also microbenchmarks that measure specific aspects of individual libraries.


For compiling the toolset itself and the build configuration, see Build instructions. If you are able to compile the toolset then enable the MCRL2_ENABLE_BENCHMARKS` CMake option to enable the generation of benchmark targets. Compile the benchmarks target, this will generate the necessary files to perform the benchmarks. It will also compile the tools and microbenchmarks if necessary.

After this step, performing the benchmarks can be done using ctest. For each tool, specification and option it generates a target named benchmark_<tool>_<specification>_<options>. Each benchmark target has the benchmark label. For example to run all benchmarks pertaining the 1394-fin specification use ctest -L benchmark -R 1394-fin, or to benchmark a specific tool use ctest -L benchmark -R lps2lts.