diff options
| author | Martin Hořeňovský | 2025-09-23 15:23:58 +0200 |
|---|---|---|
| committer | Martin Hořeňovský | 2025-09-27 13:24:46 +0200 |
| commit | 756ae05d307168eaa27bd904dbd8e591a6406889 (patch) | |
| tree | e64236a5fde23db97284d9894348af6292676db2 /src/catch2/internal | |
| parent | a2e41916f2cc0adbd27fc3d9cb89e9615fea1ad8 (diff) | |
| download | catch3-756ae05d307168eaa27bd904dbd8e591a6406889.tar.gz | |
Inline the `getResultCapture` helper into header.
We still keep the error check in the function, but hide it in an
outlined function inside a .cpp file, to promote inlining of the
retrieval part.
In the future, we should explore two things
1) Skipping over the context retrieval here, allowing direct access.
I currently do not see a way to do this while keeping the
"greppability" of mutable vs immutable accesses that is there now,
but it would help a lot when inlining is not enabled.
2) Removing the error check, to make the function trivially inlinable,
and without branches.
**runtime difference**
| --------- | Debug | Release |
|:----------|------:|--------:|
| Slow path | 0.98 | 1.07 |
| Fast path | 1.04 | 1.08 |
We lost bit of performance on the assertion slow path in debug mode,
but together with the previous commit, it comes out at net zero.
For other combinations, we see 5-10% perf improvement across the
two commits.
Diffstat (limited to 'src/catch2/internal')
| -rw-r--r-- | src/catch2/internal/catch_context.hpp | 1 | ||||
| -rw-r--r-- | src/catch2/internal/catch_run_context.cpp | 7 |
2 files changed, 0 insertions, 8 deletions
diff --git a/src/catch2/internal/catch_context.hpp b/src/catch2/internal/catch_context.hpp index e35de4b4..0b89632c 100644 --- a/src/catch2/internal/catch_context.hpp +++ b/src/catch2/internal/catch_context.hpp @@ -32,7 +32,6 @@ namespace Catch { m_resultCapture = resultCapture; } constexpr void setConfig( IConfig const* config ) { m_config = config; } - }; Context& getCurrentMutableContext(); diff --git a/src/catch2/internal/catch_run_context.cpp b/src/catch2/internal/catch_run_context.cpp index fc521f8b..0029bf56 100644 --- a/src/catch2/internal/catch_run_context.cpp +++ b/src/catch2/internal/catch_run_context.cpp @@ -809,13 +809,6 @@ namespace Catch { } } - IResultCapture& getResultCapture() { - if (auto* capture = getCurrentContext().getResultCapture()) - return *capture; - else - CATCH_INTERNAL_ERROR("No result capture instance"); - } - void IResultCapture::pushScopedMessage( MessageInfo&& message ) { Detail::g_messages.push_back( CATCH_MOVE( message ) ); } |