Benchmarking

The CLEASE test suite contains a benchmarking sub-suite as well, which can be useful for testing new code. If the adjusted code is not tested in the benchmarking suite yet, and is performance sensitive, please remember to add a new benchmark test.

Note

Running the benchmarks requires the extra requirements the test installation, e.g. from a pip install .[test] install.

The benchmarks must be enabled via pytest, and is run via the pytest-benchmark extension. Running a normal pytest command will simply skip the benchmarking tests, as they are assumed to be more expensive to run. Therefore, the recommended way to execute the benchmarks, is to tell pytest to only execute tests marked for benchmarking, e.g. from the CLEASE root directory:

pytest --fig --benchmark-only --benchmark-autosave tests/

The fig command allows a test which constructs a plots to output figures. Alternatively, tox can be used to execute the benchmarks, which is roughly equivalent to the above command:

tox -e benchmark

The --benchmark-autosave option saves a benchmark run to the .benchmarks/ folder in the root directory. Two runs from the benchmark can be compared, for example doing

pytest-benchmark compare --histogram benchmark 0001 0002

would generate a histogram file called benchmark.svg. The compare also generates a text output, and example is shown here. You can omit the --histogram benchmark flag to just get the text comparison. The run ID’s are granted automatically, so in this example the first and second run were automatically named 0001 and 0002. Omit the numbers to simply compare every previous benchmark run. For more details on how to compare benchmarks, please see the pytest-benchmark docs. The following is an example of what this histogram can look like:

_images/mc_benchmark.svg

Note

Running benchmarks is highly sensitive to the machine, and to other processes running on the machine. So to ensure a fair comparison, always compare results from the same machine under as similar loads as possible.