summaryrefslogtreecommitdiff
path: root/include/internal/benchmark/catch_chronometer.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'include/internal/benchmark/catch_chronometer.hpp')
-rw-r--r--include/internal/benchmark/catch_chronometer.hpp71
1 files changed, 0 insertions, 71 deletions
diff --git a/include/internal/benchmark/catch_chronometer.hpp b/include/internal/benchmark/catch_chronometer.hpp
deleted file mode 100644
index 1022017d..00000000
--- a/include/internal/benchmark/catch_chronometer.hpp
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Created by Joachim on 16/04/2019.
- * Adapted from donated nonius code.
- *
- * Distributed under the Boost Software License, Version 1.0. (See accompanying
- * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- */
-
-// User-facing chronometer
-
-#ifndef TWOBLUECUBES_CATCH_CHRONOMETER_HPP_INCLUDED
-#define TWOBLUECUBES_CATCH_CHRONOMETER_HPP_INCLUDED
-
-#include "catch_clock.hpp"
-#include "catch_optimizer.hpp"
-#include "detail/catch_complete_invoke.hpp"
-#include "../catch_meta.hpp"
-
-namespace Catch {
- namespace Benchmark {
- namespace Detail {
- struct ChronometerConcept {
- virtual void start() = 0;
- virtual void finish() = 0;
- virtual ~ChronometerConcept() = default;
- };
- template <typename Clock>
- struct ChronometerModel final : public ChronometerConcept {
- void start() override { started = Clock::now(); }
- void finish() override { finished = Clock::now(); }
-
- ClockDuration<Clock> elapsed() const { return finished - started; }
-
- TimePoint<Clock> started;
- TimePoint<Clock> finished;
- };
- } // namespace Detail
-
- struct Chronometer {
- public:
- template <typename Fun>
- void measure(Fun&& fun) { measure(std::forward<Fun>(fun), is_callable<Fun(int)>()); }
-
- int runs() const { return k; }
-
- Chronometer(Detail::ChronometerConcept& meter, int k)
- : impl(&meter)
- , k(k) {}
-
- private:
- template <typename Fun>
- void measure(Fun&& fun, std::false_type) {
- measure([&fun](int) { return fun(); }, std::true_type());
- }
-
- template <typename Fun>
- void measure(Fun&& fun, std::true_type) {
- Detail::optimizer_barrier();
- impl->start();
- for (int i = 0; i < k; ++i) invoke_deoptimized(fun, i);
- impl->finish();
- Detail::optimizer_barrier();
- }
-
- Detail::ChronometerConcept* impl;
- int k;
- };
- } // namespace Benchmark
-} // namespace Catch
-
-#endif // TWOBLUECUBES_CATCH_CHRONOMETER_HPP_INCLUDED