All Projects → ivafanas → Sltbench

ivafanas / Sltbench

Licence: bsl-1.0
C++ benchmark tool. Practical, stable and fast performance testing framework.

Programming Languages

cpp
1120 projects
cplusplus
227 projects

Projects that are alternatives of or similar to Sltbench

Jsperf.com
jsperf.com v2. https://github.com/h5bp/lazyweb-requests/issues/174
Stars: ✭ 1,178 (+759.85%)
Mutual labels:  performance, benchmark, benchmarking
Ezfio
Simple NVME/SAS/SATA SSD test framework for Linux and Windows
Stars: ✭ 91 (-33.58%)
Mutual labels:  performance, benchmark, benchmarking
Are We Fast Yet
Are We Fast Yet? Comparing Language Implementations with Objects, Closures, and Arrays
Stars: ✭ 161 (+17.52%)
Mutual labels:  performance, benchmark, benchmarking
Web Tooling Benchmark
JavaScript benchmark for common web developer workloads
Stars: ✭ 290 (+111.68%)
Mutual labels:  performance, benchmark, benchmarking
Bench Scripts
A compilation of Linux server benchmarking scripts.
Stars: ✭ 873 (+537.23%)
Mutual labels:  performance, benchmark, benchmarking
Phoronix Test Suite
The Phoronix Test Suite open-source, cross-platform automated testing/benchmarking software.
Stars: ✭ 1,339 (+877.37%)
Mutual labels:  performance, benchmark, benchmarking
Karma Benchmark
A Karma plugin to run Benchmark.js over multiple browsers with CI compatible output.
Stars: ✭ 88 (-35.77%)
Mutual labels:  performance, benchmark, benchmarking
Pytest Benchmark
py.test fixture for benchmarking code
Stars: ✭ 730 (+432.85%)
Mutual labels:  performance, benchmark, benchmarking
Benchmarkdotnet
Powerful .NET library for benchmarking
Stars: ✭ 7,138 (+5110.22%)
Mutual labels:  performance, benchmark, benchmarking
Sysbench Docker Hpe
Sysbench Dockerfiles and Scripts for VM and Container benchmarking MySQL
Stars: ✭ 14 (-89.78%)
Mutual labels:  performance, benchmark, benchmarking
Gatling Dubbo
A gatling plugin for running load tests on Apache Dubbo(https://github.com/apache/incubator-dubbo) and other java ecosystem.
Stars: ✭ 131 (-4.38%)
Mutual labels:  performance, benchmark, benchmarking
Gl vs vk
Comparison of OpenGL and Vulkan API in terms of performance.
Stars: ✭ 65 (-52.55%)
Mutual labels:  performance, benchmark
Ossf Cve Benchmark
The OpenSSF CVE Benchmark consists of code and metadata for over 200 real life CVEs, as well as tooling to analyze the vulnerable codebases using a variety of static analysis security testing (SAST) tools and generate reports to evaluate those tools.
Stars: ✭ 71 (-48.18%)
Mutual labels:  open-source, benchmark
Qtools
QTools collection of open source tools for embedded systems development on Windows, Linux and MacOS
Stars: ✭ 64 (-53.28%)
Mutual labels:  testing-tools, test-framework
Perftools Runner
Google Performance Tools runner using Puppeteer
Stars: ✭ 79 (-42.34%)
Mutual labels:  performance, testing-tools
Xrautomatedtests
XRAutomatedTests is where you can find functional, graphics, performance, and other types of automated tests for your XR Unity development.
Stars: ✭ 77 (-43.8%)
Mutual labels:  performance, benchmark
Phpbench
PHP Benchmarking framework
Stars: ✭ 1,235 (+801.46%)
Mutual labels:  performance, benchmarking
Scalajs Benchmark
Benchmarks: write in Scala or JS, run in your browser. Live demo:
Stars: ✭ 63 (-54.01%)
Mutual labels:  benchmark, benchmarking
Testcafe
A Node.js tool to automate end-to-end web testing.
Stars: ✭ 9,176 (+6597.81%)
Mutual labels:  testing-tools, test-framework
Xpedite
A non-sampling profiler purpose built to measure and optimize performance of ultra low latency/real time systems
Stars: ✭ 89 (-35.04%)
Mutual labels:  performance, benchmarking

sltbench

Build Status Build status

C++ benchmark tool. Practical, stable and fast performance testing framework.

  • practical - came up from daily production tasks. Usability matters
  • stable - correctness and reproducibility is a goal
  • fast - if results are stable, they should be produced as soon as possible

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.

Why sltbench

The closest and the most famous analogue is googlebench - microbenchmarking library from Google engineers.

Key features of sltbench are:

  • sltbench is about 4.7x times faster than googlebench (test execution time).
  • sltbench produces results with less timing error, which matters for performance results reproducibility. About 5x times improvement for testing dataset.
  • Supports correct mutable fixtures.
  • Supports lazy arguments generation including reading from file, autogeneration etc.. (critical for large input datasets which does not fit into RAM all together)
  • Output customization, separate tools for performance results comparison and more.

measure time

(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:

  • Less false speedups/slowdowns you get during testing. Economy of developer time.
  • More precise performance changes may be obtained. If testing tool provides 15% relative error than 10% speedup couldn't be measured.

compilation time

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

Motivating example

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();

Documentation

License

sltbench is released under the Apache 2.0 license

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].