28[[nodiscard]]
auto benchmark(functor test,
size_t block_size)
30 std::vector<float> outp(2 * block_size);
31 float* output = outp.data();
32 float *x = &output[0], *y = &output[block_size];
36 for (
auto& value : outp) {
37 value = rng() /
static_cast<double>(1ULL << 32) - (1ULL << 32);
40 auto before = std::chrono::high_resolution_clock::now();
45 auto after = std::chrono::high_resolution_clock::now();
48 std::chrono::duration_cast<std::chrono::duration<double, std::ratio<1, 1>>>(
52 volatile auto sum = std::accumulate(outp.cbegin(), outp.cend(), 0.0f);
53 if (sum == std::numeric_limits<
decltype(sum)>::min()) {
55 return decltype(dur){};
auto format_duration(std::string_view name, dur_t dur, size_t iterations, size_t block_size)
Definition benchmark_common.h:61