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