C++ benchmark tool. Practical, stable and fast performance testing framework.
This tool is trained to gain about 5% measure stability (depends on function, input and context). Of course, it cannot strongly guarantee 5% stability (some functions are unstable itself, nothing helps), but it tends to.
The closest and the most famous analogue is googlebench - microbenchmarking library from Google engineers.
Key features of sltbench
are:
(Results below are obtained on 4 cores i7-2600 CPU @ 3.40GHz, 8Gb RAM for sltbench dataset; see "Metrics" section for details; see How to benchmark section for instructions)
sltbench | googlebench | nonius | |
---|---|---|---|
benchmark time, sec | 87.45 | 416.44 | 482.03 |
average rel error, % | 0.4% | 5.6% | 2.6% |
maximum rel error, % | 2.9% | 15.1% | 60% |
4.7x times speedup might be useful for projects with big performance tests count. For the original project regression performance testing tooks about a week and testing time reduction matters.
Less relative error means:
Sltbench contains improvements on compilation time of benchmarks (not library!) for the most popular api since 2.4.0. Benchmarks for functions without arguments and driver launch might be implemented in a more lightweight manner. See Advanced user guide for explanation how to reuse improvements.
(benchcompile metric results below are obtained on Intel(R) Core(TM) i5-8400 CPU @ 2.80GHz, clang-6.0.0, dataset=simple for optimized cases only)
compilation time, sec | |
---|---|
sltbench 2.4.0 | 2.5 |
googlebench v1.5.1 | 16.5 |
The following code registers my_function
for timing. Just compile it (do not
forget about includes) and the executable file will test my_function
for
performance.
void my_function()
{
std::vector<size_t> v(100000, 0);
std::sort(v.begin(), v.end());
}
SLTBENCH_FUNCTION(my_function);
SLTBENCH_MAIN();
sltbench is released under the Apache 2.0 license