| /* |
| * 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) |
| */ |
| |
| // Benchmark results |
| |
| #ifndef TWOBLUECUBES_CATCH_BENCHMARK_RESULTS_HPP_INCLUDED |
| #define TWOBLUECUBES_CATCH_BENCHMARK_RESULTS_HPP_INCLUDED |
| |
| #include "catch_clock.hpp" |
| #include "catch_estimate.hpp" |
| #include "catch_outlier_classification.hpp" |
| |
| #include <algorithm> |
| #include <vector> |
| #include <string> |
| #include <iterator> |
| |
| namespace Catch { |
| namespace Benchmark { |
| template <typename Duration> |
| struct SampleAnalysis { |
| std::vector<Duration> samples; |
| Estimate<Duration> mean; |
| Estimate<Duration> standard_deviation; |
| OutlierClassification outliers; |
| double outlier_variance; |
| |
| template <typename Duration2> |
| operator SampleAnalysis<Duration2>() const { |
| std::vector<Duration2> samples2; |
| samples2.reserve(samples.size()); |
| std::transform(samples.begin(), samples.end(), std::back_inserter(samples2), [](Duration d) { return Duration2(d); }); |
| return { |
| std::move(samples2), |
| mean, |
| standard_deviation, |
| outliers, |
| outlier_variance, |
| }; |
| } |
| }; |
| } // namespace Benchmark |
| } // namespace Catch |
| |
| #endif // TWOBLUECUBES_CATCH_BENCHMARK_RESULTS_HPP_INCLUDED |