1
0
mirror of https://github.com/gnss-sdr/gnss-sdr synced 2024-12-14 12:10:34 +00:00

Add atan2 benchmark

This commit is contained in:
Carles Fernandez 2022-02-10 13:37:52 +01:00
parent 7a0259fb1d
commit c5daae08f1
No known key found for this signature in database
GPG Key ID: 4C583C52B0C3877D
2 changed files with 58 additions and 0 deletions

View File

@ -102,6 +102,7 @@ add_benchmark(benchmark_copy)
add_benchmark(benchmark_preamble core_system_parameters)
add_benchmark(benchmark_detector core_system_parameters)
add_benchmark(benchmark_reed_solomon core_system_parameters)
add_benchmark(benchmark_atan2 Gnuradio::runtime)
if(has_std_plus_void)
target_compile_definitions(benchmark_detector PRIVATE -DCOMPILER_HAS_STD_PLUS_VOID=1)

View File

@ -0,0 +1,57 @@
/*!
* \file benchmark_atan2.cc
* \brief Benchmark for atan2 implementations
* \author Carles Fernandez-Prades, 2022. cfernandez(at)cttc.es
*
*
* -----------------------------------------------------------------------------
*
* GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
* This file is part of GNSS-SDR.
*
* Copyright (C) 2022 (see AUTHORS file for a list of contributors)
* SPDX-License-Identifier: GPL-3.0-or-later
*
* -----------------------------------------------------------------------------
*/
#include <benchmark/benchmark.h>
#include <gnuradio/math.h>
#include <cmath>
#include <random>
void bm_atan2(benchmark::State& state)
{
std::random_device rd;
std::default_random_engine e2(rd());
std::uniform_real_distribution<> dist(-1.0, 1.0);
float a = dist(e2);
float b = dist(e2);
float c;
while (state.KeepRunning())
{
c = std::atan2(a, b);
}
}
void bm_fast_atan2(benchmark::State& state)
{
std::random_device rd;
std::default_random_engine e2(rd());
std::uniform_real_distribution<> dist(-1.0, 1.0);
float a = dist(e2);
float b = dist(e2);
float c;
while (state.KeepRunning())
{
c = gr::fast_atan2f(a, b);
}
}
BENCHMARK(bm_atan2);
BENCHMARK(bm_fast_atan2);
BENCHMARK_MAIN();