mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2024-12-14 04:00:34 +00:00
Add atan2 benchmark
This commit is contained in:
parent
7a0259fb1d
commit
c5daae08f1
@ -102,6 +102,7 @@ add_benchmark(benchmark_copy)
|
|||||||
add_benchmark(benchmark_preamble core_system_parameters)
|
add_benchmark(benchmark_preamble core_system_parameters)
|
||||||
add_benchmark(benchmark_detector core_system_parameters)
|
add_benchmark(benchmark_detector core_system_parameters)
|
||||||
add_benchmark(benchmark_reed_solomon core_system_parameters)
|
add_benchmark(benchmark_reed_solomon core_system_parameters)
|
||||||
|
add_benchmark(benchmark_atan2 Gnuradio::runtime)
|
||||||
|
|
||||||
if(has_std_plus_void)
|
if(has_std_plus_void)
|
||||||
target_compile_definitions(benchmark_detector PRIVATE -DCOMPILER_HAS_STD_PLUS_VOID=1)
|
target_compile_definitions(benchmark_detector PRIVATE -DCOMPILER_HAS_STD_PLUS_VOID=1)
|
||||||
|
57
src/tests/benchmarks/benchmark_atan2.cc
Normal file
57
src/tests/benchmarks/benchmark_atan2.cc
Normal 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();
|
Loading…
Reference in New Issue
Block a user