Concepts¶
Test data organization¶
In calcite, the performance tests are submitted in the form of a Dataset and organized as Test suite/config/Test/Datapoint.
- Dataset
A dataset is the content of the results of multiple test suites. These are sent to calcite for each commit, and multiple datasets can be sent per commit.
Sending multiple datasets for a same commit can be used to enhance the results of the statistical analyses, or simply because you have different configurations.
- Test suite
A test suite regroups multiple tests, and are defined by the users. Depending on the importer used, it will correspond to different things.
This usually regroups runs of a same benchmark with different input data.
Examples:
Fibonacci ParseJSon
- Benchmark configuration
Each dataset is linked to a given configuration. This is how you usually differentiate datasets based on their execution environment (Hardware, OS, …), compiler options, application settings, etc.
Examples:
Windows-10-64 Linux-x64-clang Linux-x64-gcc Runner-AMD-ryzen-3900X
- Test
A test can be anything from a microbenchmark to a performance load test. Those tests usually report multiple datapoints
Examples:
Fibonacci10 Fibonacci20 canada.json one-json-per-line.jsons
- Datapoint
A datapoint is a set of values sampled for a given test. Usually those values represent different iterations of the same test, and describe one of the characteristics of the test.
Examples:
Execution time (ns) Loading time (ms) Cache miss rate (%) Branch misprediction rate (%) Memory footprint (MB) Executable Size (kB)
- Workflow
A calcite workflow can be triggered to initiate various actions such as sending notifications.