<feed xmlns='http://www.w3.org/2005/Atom'>
<title>catch3/include/internal/benchmark, branch v2.11.1</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>Provide const overload of ObjectStorage::stored_object()</title>
<updated>2019-12-23T20:22:32+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2019-12-23T20:22:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=e4004e0adb77d897fa4b1446a7f3d3c6bce2016f'/>
<id>e4004e0adb77d897fa4b1446a7f3d3c6bce2016f</id>
<content type='text'>
Fixes #1820
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fixes #1820
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix wrong namespacing of benchmarking constructor helpers</title>
<updated>2019-11-21T15:22:04+00:00</updated>
<author>
<name>Joe Burzinski</name>
</author>
<published>2019-11-19T04:22:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=cfba9dce97e8b15f84d4ff329cc065abccf1cea1'/>
<id>cfba9dce97e8b15f84d4ff329cc065abccf1cea1</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Ensure the full benchmarking support is present in the single header</title>
<updated>2019-11-15T10:59:43+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2019-11-15T10:54:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=f23f96883a59979e693852ffa9f180eccdd09862'/>
<id>f23f96883a59979e693852ffa9f180eccdd09862</id>
<content type='text'>
Fixes #1800
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fixes #1800
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix error when period of steady_clock is not nano</title>
<updated>2019-11-01T20:52:38+00:00</updated>
<author>
<name>cericks0n</name>
</author>
<published>2019-11-01T20:52:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=fa6d52e2a344bb7be7ab03b38ffb3c193be3a84e'/>
<id>fa6d52e2a344bb7be7ab03b38ffb3c193be3a84e</id>
<content type='text'>
On systems where std::chrono::steady_clock::period is not std::nano, benchmark tests fail to compile due to trying to convert analysis.samples from a vector of duration&lt;double, clock::period&gt; to a vector of std::chrono::duration&lt;double, std::nano&gt;.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
On systems where std::chrono::steady_clock::period is not std::nano, benchmark tests fail to compile due to trying to convert analysis.samples from a vector of duration&lt;double, clock::period&gt; to a vector of std::chrono::duration&lt;double, std::nano&gt;.</pre>
</div>
</content>
</entry>
<entry>
<title>Rework how warning suppression in macros is done</title>
<updated>2019-10-27T20:07:21+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2019-10-27T20:07:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=849f2848bdf625a7b6248e4e62ba0e39ee609634'/>
<id>849f2848bdf625a7b6248e4e62ba0e39ee609634</id>
<content type='text'>
Previously, each warning suppression was self-contained, with its
own pair of `SUPPRESS_X_WARNING` and `UNSUPPRESS_X_WARNING` macros.
This had the obvious advantage of being self-containing, but it
also meant that if we needed to suppress more than one warning
in a single place, then we would manipulate the compiler's warning
state multiple times, even though logically we would only need one
layer.

The new way of suppressing warnings in macros is to push compiler's
warning state with `CATCH_INTERNAL_START_WARNINGS_SUPPRESSION` macro,
then disable whatever macros we need with the
`CATCH_INTERNAL_SUPPRESS_X_WARNINGS` macro, and then return to the
previous state using `CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION`.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Previously, each warning suppression was self-contained, with its
own pair of `SUPPRESS_X_WARNING` and `UNSUPPRESS_X_WARNING` macros.
This had the obvious advantage of being self-containing, but it
also meant that if we needed to suppress more than one warning
in a single place, then we would manipulate the compiler's warning
state multiple times, even though logically we would only need one
layer.

The new way of suppressing warnings in macros is to push compiler's
warning state with `CATCH_INTERNAL_START_WARNINGS_SUPPRESSION` macro,
then disable whatever macros we need with the
`CATCH_INTERNAL_SUPPRESS_X_WARNINGS` macro, and then return to the
previous state using `CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION`.
</pre>
</div>
</content>
</entry>
<entry>
<title>Standardize and document the parallel processing toggle</title>
<updated>2019-06-15T10:50:36+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2019-06-15T10:50:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=c365ac392b3b4edf1cb232407111902146249404'/>
<id>c365ac392b3b4edf1cb232407111902146249404</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Move the async-using parts of benchmarking into a .cpp file</title>
<updated>2019-06-15T09:43:25+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2019-06-15T09:14:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=e640c3837aaf3d627f8f77998cf3cd142ee139fa'/>
<id>e640c3837aaf3d627f8f77998cf3cd142ee139fa</id>
<content type='text'>
This keeps it out of the main include path when benchmarking is
enabled, somewhat reducing the compilation-time penalty.

Also moved some other functions into the .cpp file, especially
helpers that could be given internal linkage, and concretized some
iterator-templated code that only ever used
`std::vector&lt;double&gt;::iterator`.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This keeps it out of the main include path when benchmarking is
enabled, somewhat reducing the compilation-time penalty.

Also moved some other functions into the .cpp file, especially
helpers that could be given internal linkage, and concretized some
iterator-templated code that only ever used
`std::vector&lt;double&gt;::iterator`.
</pre>
</div>
</content>
</entry>
<entry>
<title>Various improvements to the benchmarking support</title>
<updated>2019-06-06T19:28:56+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2019-05-19T18:54:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=e340ab8db6dbe07a58b6e72a9364d67d2178293c'/>
<id>e340ab8db6dbe07a58b6e72a9364d67d2178293c</id>
<content type='text'>
* Units from &lt;ratio&gt; are no longer redeclared in our own namespace
* The default clock is `steady_clock`, not `high_resolution_clock`,
because, as HH says "high_resolution_clock is useless. If you want
measure the passing of time, use steady_clock. If you want user
friendly time, use system_clock".
* Benchmarking support is opt-in, not opt-out, to avoid the large
(~10%) compile time penalty.
* Benchmarking-related options in CLI are always present, to decrease
the amount of code that is only compiled conditionally and making
the whole shebang more maintainble.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Units from &lt;ratio&gt; are no longer redeclared in our own namespace
* The default clock is `steady_clock`, not `high_resolution_clock`,
because, as HH says "high_resolution_clock is useless. If you want
measure the passing of time, use steady_clock. If you want user
friendly time, use system_clock".
* Benchmarking support is opt-in, not opt-out, to avoid the large
(~10%) compile time penalty.
* Benchmarking-related options in CLI are always present, to decrease
the amount of code that is only compiled conditionally and making
the whole shebang more maintainble.
</pre>
</div>
</content>
</entry>
<entry>
<title>Integrate Nonius benchmark into Catch2</title>
<updated>2019-06-06T17:33:37+00:00</updated>
<author>
<name>Joachim Meyer</name>
</author>
<published>2019-04-23T21:41:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=ce2560ca956c1743f8bc871e0bf95f65a3db887c'/>
<id>ce2560ca956c1743f8bc871e0bf95f65a3db887c</id>
<content type='text'>
Changes done to Nonius:
* Moved things into "Catch::Benchmark" namespace
* Benchmarks were integrated with `TEST_CASE`/`SECTION`/`GENERATE` macros
* Removed Nonius's parameters for benchmarks, Generators should be used instead
* Added relevant methods to the reporter interface (default-implemented, to avoid
breaking existing 3rd party reporters)
* Async processing is guarded with `_REENTRANT` macro for GCC/Clang, used by default
on MSVC
* Added a macro `CATCH_CONFIG_DISABLE_BENCHMARKING` that removes all traces of
benchmarking from Catch
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Changes done to Nonius:
* Moved things into "Catch::Benchmark" namespace
* Benchmarks were integrated with `TEST_CASE`/`SECTION`/`GENERATE` macros
* Removed Nonius's parameters for benchmarks, Generators should be used instead
* Added relevant methods to the reporter interface (default-implemented, to avoid
breaking existing 3rd party reporters)
* Async processing is guarded with `_REENTRANT` macro for GCC/Clang, used by default
on MSVC
* Added a macro `CATCH_CONFIG_DISABLE_BENCHMARKING` that removes all traces of
benchmarking from Catch
</pre>
</div>
</content>
</entry>
</feed>
