Download build/_deps/catch2-src/include/internal/benchmark/catch_execution_plan.hpp from camenduru/thrust: direct link, hf CLI and curl.
- Browser
- Download file 2.31 kB
-
https://huggingface.co/camenduru/thrust/resolve/main/build/_deps/catch2-src/include/internal/benchmark/catch_execution_plan.hpp
- Command line
-
hf download hf://camenduru/thrust/build/_deps/catch2-src/include/internal/benchmark/catch_execution_plan.hpp
-
curl -L -o catch_execution_plan.hpp https://huggingface.co/camenduru/thrust/resolve/main/build/_deps/catch2-src/include/internal/benchmark/catch_execution_plan.hpp
2.31 kB
| /* | |
| * 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) | |
| */ | |
| // Execution plan | |
| namespace Catch { | |
| namespace Benchmark { | |
| template <typename Duration> | |
| struct ExecutionPlan { | |
| int iterations_per_sample; | |
| Duration estimated_duration; | |
| Detail::BenchmarkFunction benchmark; | |
| Duration warmup_time; | |
| int warmup_iterations; | |
| template <typename Duration2> | |
| operator ExecutionPlan<Duration2>() const { | |
| return { iterations_per_sample, estimated_duration, benchmark, warmup_time, warmup_iterations }; | |
| } | |
| template <typename Clock> | |
| std::vector<FloatDuration<Clock>> run(const IConfig &cfg, Environment<FloatDuration<Clock>> env) const { | |
| // warmup a bit | |
| Detail::run_for_at_least<Clock>(std::chrono::duration_cast<ClockDuration<Clock>>(warmup_time), warmup_iterations, Detail::repeat(now<Clock>{})); | |
| std::vector<FloatDuration<Clock>> times; | |
| times.reserve(cfg.benchmarkSamples()); | |
| std::generate_n(std::back_inserter(times), cfg.benchmarkSamples(), [this, env] { | |
| Detail::ChronometerModel<Clock> model; | |
| this->benchmark(Chronometer(model, iterations_per_sample)); | |
| auto sample_time = model.elapsed() - env.clock_cost.mean; | |
| if (sample_time < FloatDuration<Clock>::zero()) sample_time = FloatDuration<Clock>::zero(); | |
| return sample_time / iterations_per_sample; | |
| }); | |
| return times; | |
| } | |
| }; | |
| } // namespace Benchmark | |
| } // namespace Catch | |