<feed xmlns='http://www.w3.org/2005/Atom'>
<title>catch3/src/catch2/internal/catch_test_case_tracker.hpp, branch constexpr_approx</title>
<subtitle>Progmasoft Catch3: an independently maintained C++17 test framework with a parallel runner, property checks, snapshots and structured results.</subtitle>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/'/>
<entry>
<title>Fix spelling</title>
<updated>2023-04-29T10:55:51+00:00</updated>
<author>
<name>Vertexwahn</name>
</author>
<published>2023-04-25T18:14:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=46539b6d9b1d429fcc2261d3e687482c878a9ddb'/>
<id>46539b6d9b1d429fcc2261d3e687482c878a9ddb</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Early evaluate line loc in NameAndLoc::operator==</title>
<updated>2023-02-20T14:19:57+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2023-02-20T09:22:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=584973a485160bea0feb8764c28bb65d03b988ac'/>
<id>584973a485160bea0feb8764c28bb65d03b988ac</id>
<content type='text'>
I do not know if checking the tracker name or the tracker's file
part of the location first would provide better results, but
in the common case, the line part of the location check should be
rather unique, because different `SECTION`s will have different
source lines where they are defined.

I also propagated this same check into `ITracker::findChild`,
because this significantly improves performance of section tracking
in Debug builds -&gt; 10% in macro benchmark heavily focused on section
tracking. In Release build there is usually no difference, because
the inliner will inline `NameAndLoc::operator==` into `findChild`,
and then eliminate the redundant check. (If the inliner decides
against, then this still improves the performance on average).
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
I do not know if checking the tracker name or the tracker's file
part of the location first would provide better results, but
in the common case, the line part of the location check should be
rather unique, because different `SECTION`s will have different
source lines where they are defined.

I also propagated this same check into `ITracker::findChild`,
because this significantly improves performance of section tracking
in Debug builds -&gt; 10% in macro benchmark heavily focused on section
tracking. In Release build there is usually no difference, because
the inliner will inline `NameAndLoc::operator==` into `findChild`,
and then eliminate the redundant check. (If the inliner decides
against, then this still improves the performance on average).
</pre>
</div>
</content>
</entry>
<entry>
<title>Avoid copying NameAndLocationRef when passed as argument</title>
<updated>2023-02-20T14:17:35+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2023-02-19T22:53:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=4f7c8cb28a0fdb4cc8b93f139b1b1e5d3ff0a328'/>
<id>4f7c8cb28a0fdb4cc8b93f139b1b1e5d3ff0a328</id>
<content type='text'>
`NameAndLocationRef` is pretty large type, so even in release build,
it is unlikely to be passed in registers. In addition to the fact
that some platforms currently do not allow passing even small types
in register (Windows ABI!!), it is better to pass it as a ref,
effectively passing around a pointer.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
`NameAndLocationRef` is pretty large type, so even in release build,
it is unlikely to be passed in registers. In addition to the fact
that some platforms currently do not allow passing even small types
in register (Windows ABI!!), it is better to pass it as a ref,
effectively passing around a pointer.
</pre>
</div>
</content>
</entry>
<entry>
<title>Inline some non-virtual functions in ITracker and TrackerContext</title>
<updated>2023-02-20T14:02:50+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2023-02-20T14:02:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=2befd98da2b91c705de8fb0ea27bff662041f51c'/>
<id>2befd98da2b91c705de8fb0ea27bff662041f51c</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Avoid allocating trimmed name for SectionTracker</title>
<updated>2023-02-20T13:32:46+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2023-02-19T23:12:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=fed143624660419a55b114138e51f86f717f21dd'/>
<id>fed143624660419a55b114138e51f86f717f21dd</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Remove unused TrackerContext::endRun function</title>
<updated>2023-02-20T13:32:10+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2023-02-19T18:45:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=1af351cea1e1b5cd05cfc3b1aa48ea70c643dc5a'/>
<id>1af351cea1e1b5cd05cfc3b1aa48ea70c643dc5a</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Avoid allocations when looking for trackers</title>
<updated>2023-01-29T09:14:20+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2023-01-27T21:12:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=43f02027e47310e200f20f5c3a1de6fe281e2f81'/>
<id>43f02027e47310e200f20f5c3a1de6fe281e2f81</id>
<content type='text'>
Now we delay allocating owning `NameAndLocation` instances until
we construct a new tracker (because a tracker's lifetime can be
significantly different from the underlying tracked-thing's name).

This saves 4239 allocations (436948 -&gt; 432709) when running
`./tests/SelfTest -o /dev/null`, at some cost to code clarity
due to introducing a new ref type, `NameAndLocationRef`.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Now we delay allocating owning `NameAndLocation` instances until
we construct a new tracker (because a tracker's lifetime can be
significantly different from the underlying tracked-thing's name).

This saves 4239 allocations (436948 -&gt; 432709) when running
`./tests/SelfTest -o /dev/null`, at some cost to code clarity
due to introducing a new ref type, `NameAndLocationRef`.
</pre>
</div>
</content>
</entry>
<entry>
<title>Stop exceptions in generator constructors from aborting the binary</title>
<updated>2023-01-22T15:04:16+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2023-01-17T10:04:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=8359a6b244a26cffabd4440b17fac8b1392815af'/>
<id>8359a6b244a26cffabd4440b17fac8b1392815af</id>
<content type='text'>
Fixes #2615
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fixes #2615
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix references to license file</title>
<updated>2022-10-28T09:30:15+00:00</updated>
<author>
<name>Lars Toenning</name>
</author>
<published>2022-10-28T09:22:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=f1084fb30990fe40c8f5b70034970c7eb4e1da72'/>
<id>f1084fb30990fe40c8f5b70034970c7eb4e1da72</id>
<content type='text'>
The license file was renamed with 6a502cc2f5fedd59b3495b58708f0d6d987ed9e1
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The license file was renamed with 6a502cc2f5fedd59b3495b58708f0d6d987ed9e1
</pre>
</div>
</content>
</entry>
<entry>
<title>Use StringRefs in SectionTracker's filter bookkeeping</title>
<updated>2021-09-09T09:04:34+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2021-09-09T09:04:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=12bca890b7a0f50357f47ca0517578a7c5ca2e15'/>
<id>12bca890b7a0f50357f47ca0517578a7c5ca2e15</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
