mirror of
				https://github.com/gnss-sdr/gnss-sdr
				synced 2025-10-31 07:13:03 +00:00 
			
		
		
		
	Add atan2 benchmark
This commit is contained in:
		| @@ -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) | ||||
|   | ||||
							
								
								
									
										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(); | ||||
		Reference in New Issue
	
	Block a user
	 Carles Fernandez
					Carles Fernandez