forked from catchorg/Catch2
		
	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
		
			
				
	
	
		
			51 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
/*
 | 
						|
 *  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
 |