<feed xmlns='http://www.w3.org/2005/Atom'>
<title>catch3/src/catch2/benchmark/detail/catch_benchmark_stats.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>Reduce the number of templates in Benchmarking</title>
<updated>2023-09-08T08:04:31+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2023-08-31T19:52:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=47a2c969380259e899f471edde84f06a6d687dc9'/>
<id>47a2c969380259e899f471edde84f06a6d687dc9</id>
<content type='text'>
The basic idea was to reduce the number of things dependent on the `Clock`
type. To that end, I replaced `Duration&lt;Clock&gt;` with `IDuration` typedef
for `std::nanoseconds`, and `FloatDuration&lt;Clock&gt;` with `FDuration`
typedef for `Duration&lt;double, std::nano&gt;`. We can generally assume that
any clock's duration can be expressed in nanoseconds, as long as we insert
`duration_cast`s into the right places.

Note that we cannot remove all dependence on `Clock` as a template
arguments, because functions that actually measure the elapsed time have
to use the Clock.

We also changed some template function arguments to pass plain function
pointers, so that the actual implementation can be placed into a cpp file.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The basic idea was to reduce the number of things dependent on the `Clock`
type. To that end, I replaced `Duration&lt;Clock&gt;` with `IDuration` typedef
for `std::nanoseconds`, and `FloatDuration&lt;Clock&gt;` with `FDuration`
typedef for `Duration&lt;double, std::nano&gt;`. We can generally assume that
any clock's duration can be expressed in nanoseconds, as long as we insert
`duration_cast`s into the right places.

Note that we cannot remove all dependence on `Clock` as a template
arguments, because functions that actually measure the elapsed time have
to use the Clock.

We also changed some template function arguments to pass plain function
pointers, so that the actual implementation can be placed into a cpp file.
</pre>
</div>
</content>
</entry>
<entry>
<title>Cleanup internal includes by splitting out some event structs</title>
<updated>2023-03-31T17:31:51+00:00</updated>
<author>
<name>Martin Hořeňovský</name>
</author>
<published>2023-03-31T08:44:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.progmasoft.com/catch3/commit/?id=9f08097f55eb29a61efcdb4af41952a67e155215'/>
<id>9f08097f55eb29a61efcdb4af41952a67e155215</id>
<content type='text'>
* Split out BenchmarkInfo and BenchmarkStats to their own header
* Outline BenchmarkStats&lt;&gt; declaration to separate header
* Split out TestRunInfo into its own header

These changes let us remove the large `interfaces_reporter.hpp`
include from `benchmark.hpp`, and replace it with
`interfaces_capture.hpp` in `run_context.hpp`.

I also cleaned out `interfaces_repoter.hpp` from reporter headers
that depend on `reporter_common_base.hpp`. This will not change
anything in the actual inclusion set, but makes it logically
more consistent.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Split out BenchmarkInfo and BenchmarkStats to their own header
* Outline BenchmarkStats&lt;&gt; declaration to separate header
* Split out TestRunInfo into its own header

These changes let us remove the large `interfaces_reporter.hpp`
include from `benchmark.hpp`, and replace it with
`interfaces_capture.hpp` in `run_context.hpp`.

I also cleaned out `interfaces_repoter.hpp` from reporter headers
that depend on `reporter_common_base.hpp`. This will not change
anything in the actual inclusion set, but makes it logically
more consistent.
</pre>
</div>
</content>
</entry>
</feed>
