/* * 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