Giter Site home page Giter Site logo

cpp-testing / ut-benchmark Goto Github PK

View Code? Open in Web Editor NEW
7.0 7.0 0.0 20.71 MB

Benchmarks - Unit Testing Frameworks

Makefile 0.01% C++ 99.78% HTML 0.01% C 0.18% Shell 0.01% Perl 0.01% M4 0.01% Batchfile 0.01% CMake 0.01%
testing cpp-library cpp20 catch2 doctest googletest boost benchmarks

ut-benchmark's Introduction

Benchmarks - Unit Testing Frameworks

Framework Version Standard License Linkage Test configuration
Boost.Test 1.71.0 C++03 Boost 1.0 single header/library static library
GoogleTest 1.10.0 C++11 BSD-3 library static library
Catch 2.10.2 C++11 Boost 1.0 single header CATCH_CONFIG_FAST_COMPILE
Doctest 2.3.5 C++11 MIT single header DOCTEST_CONFIG_SUPER_FAST_ASSERTS
μt 1.1.0 C++20 Boost 1.0 single header/module
Include / 0 tests, 0 asserts, 1 cpp file
Assert / 1 test, 1'000'000 asserts, 1 cpp file
Test / 1'000 tests, 0 asserts, 1 cpp file
Suite / 10'000 tests, 0 asserts, 100 cpp files
Suite+Assert / 10'000 tests, 40'000 asserts, 100 cpp files
Suite+Assert+STL / 10'000 tests, 20'000 asserts, 100 cpp files
Incremental Build - Suite+Assert+STL / 1 cpp file change (1'000 tests, 20'000 asserts, 100 cpp files)
Suite+Assert+STL / 10'000 tests, 20'000 asserts, 100 cpp files
(Headers vs Precompiled headers vs C++20 Modules)

To run benchmarks

cd benchmarks && ./bench.sh

ut-benchmark's People

Contributors

kris-jusiak avatar krzysztof-jusiak avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

ut-benchmark's Issues

Difference in measurements between googletest and the rest of these libraries

Catch2 and doctest are "single header" but they are effectively a .cpp file and a .h file clumped together. I see that ut has also introduced the concept of BOOST_UT_IMPLEMENTATION but it currently provides much less functionality compared to Catch2 and doctest. In order to make the measurements completely fair one would need to either include the compilation of the googletest static library itself (which is obviously weird), or make static libraries for the implementations (test runners) of Catch2/doctest (and ut) and link against them (and when measuring time the compilation of the static library should be excluded - only the other .cpp file + linking should be considered). I'd argue that all 4 libraries should go through the process of linking a static library to make things equal.

doctest even provides the 2 parts (.cpp and a .h from which the final header is assembled) as separate files: https://github.com/onqtam/doctest/tree/master/doctest/parts

It would be cool if you could incorporate the use of FAST_CHECK_EQ(a, b) in a separate additional benchmark for doctest instead of the tradicional CHECK(a == b), but this is irrelevant to the current issue.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.