Read-only mirrors. Development, issues and pull requests are on GitHub.

summaryrefslogtreecommitdiffhomepage
path: root/benchmarks/runtime_assertion_benches.cpp
diff options
context:
space:
mode:
authorMartin Hořeňovský2025-09-23 17:17:29 +0200
committerMartin Hořeňovský2025-09-23 17:17:33 +0200
commitb626e4c7aedb953e79784265e12283a62d5e94d3 (patch)
treec06dad7bffdb4aed3104f4aa3cad790534864b11 /benchmarks/runtime_assertion_benches.cpp
parent434bf55d4727ab1d1aef244ef16823a0ed1e6b4a (diff)
downloadcatch3-b626e4c7aedb953e79784265e12283a62d5e94d3.tar.gz
Add simple runtime benchmarks
For now we add just two binaries, one with assertions taking the fast path, one with assertions taking the slow path, and the ability to run 1 of `REQUIRE(true)`, `REQUIRE_NOTHROW`, `REQUIRE_THROWS` in a loop. I also split off a CMake preset which enables more tests than the basic `simple-tests` preset, but does not enable the most expensive tests which force recompilation of Catch2 multiple times.
Diffstat (limited to 'benchmarks/runtime_assertion_benches.cpp')
-rw-r--r--benchmarks/runtime_assertion_benches.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/benchmarks/runtime_assertion_benches.cpp b/benchmarks/runtime_assertion_benches.cpp
new file mode 100644
index 00000000..6a28e3fa
--- /dev/null
+++ b/benchmarks/runtime_assertion_benches.cpp
@@ -0,0 +1,27 @@
+
+// Copyright Catch2 Authors
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE.txt or copy at
+// https://www.boost.org/LICENSE_1_0.txt)
+
+// SPDX-License-Identifier: BSL-1.0
+
+#include <catch2/catch_test_macros.hpp>
+
+TEST_CASE("Simple REQUIRE - 10M") {
+ for (size_t i = 0; i < 10'000'000; ++i) {
+ REQUIRE(true);
+ }
+}
+
+TEST_CASE("Simple NOTHROW - 10M") {
+ for (size_t i = 0; i < 10'000'000; ++i) {
+ REQUIRE_NOTHROW([](){}());
+ }
+}
+
+TEST_CASE("Simple THROWS - 10M") {
+ for (size_t i = 0; i < 10'000'000; ++i) {
+ REQUIRE_THROWS([]() { throw 1; }());
+ }
+}