11#ifndef INCLUDED_BENCHMARK_COMMON
12#define INCLUDED_BENCHMARK_COMMON
13#include <spdlog/fmt/fmt.h>
20template <
typename functor>
21[[nodiscard]]
auto benchmark(functor test,
size_t block_size)
23 using namespace std::chrono;
24 std::vector<float> outp(2 * block_size);
25 float* output = outp.data();
26 float *x = &output[0], *y = &output[block_size];
29 memset(output, 0, 2 * block_size *
sizeof(
float));
31 auto before = high_resolution_clock::now();
36 auto after = high_resolution_clock::now();
38 auto dur = duration_cast<duration<double, std::ratio<1, 1>>>(after - before);
41template <
typename dur_t>
47 auto dur_s = std::chrono::duration_cast<std::chrono::duration<double>>(dur);
48 return fmt::format(FMT_STRING(
"{:<18} time: {:<8.4e} s throughput: {:>6.3e} it/s"),
51 static_cast<double>(iterations) / dur_s.count());
auto format_duration(std::string_view name, dur_t dur, size_t iterations, size_t block_size)
Definition: benchmark_common.h:42
auto benchmark(functor test, size_t block_size)
Definition: benchmark_common.h:21
fmt::format_context::iterator format(const gr::io_signature &iosig, format_context &ctx) const