From 85d95aff5450645440f63cfe1c4fc7b1028f2804 Mon Sep 17 00:00:00 2001 From: Siarhei Fedartsou Date: Mon, 13 May 2024 18:21:39 +0200 Subject: [PATCH] Optimise R-tree queries in the case if there is no need to limit maximum number of results --- include/util/rectangle.hpp | 2 -- src/benchmarks/match.cpp | 35 +++++++++++++++++++---------------- 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/include/util/rectangle.hpp b/include/util/rectangle.hpp index 2d4a45fc8..aca192446 100644 --- a/include/util/rectangle.hpp +++ b/include/util/rectangle.hpp @@ -1,11 +1,9 @@ #ifndef OSRM_UTIL_RECTANGLE_HPP #define OSRM_UTIL_RECTANGLE_HPP -#include "coordinate.hpp" #include "util/coordinate.hpp" #include "util/coordinate_calculation.hpp" #include -#include #include #include diff --git a/src/benchmarks/match.cpp b/src/benchmarks/match.cpp index 007f4fe2c..321fad386 100644 --- a/src/benchmarks/match.cpp +++ b/src/benchmarks/match.cpp @@ -220,11 +220,14 @@ try params.radiuses.emplace_back(); } - auto run_benchmark = [&](double radiusInMeters) + auto run_benchmark = [&](std::optional radiusInMeters) { - for (auto &radius : params.radiuses) + if (radiusInMeters) { - radius = radiusInMeters; + for (auto &radius : params.radiuses) + { + radius = *radiusInMeters; + } } TIMER_START(routes); @@ -241,25 +244,25 @@ try } } TIMER_STOP(routes); - std::cout << "Radius " << radiusInMeters << "m: " << std::endl; + if (radiusInMeters) + { + std::cout << "Radius " << *radiusInMeters << "m: " << std::endl; + } + else + { + std::cout << "Default radius: " << std::endl; + } std::cout << (TIMER_MSEC(routes) / NUM) << "ms/req at " << params.coordinates.size() << " coordinate" << std::endl; std::cout << (TIMER_MSEC(routes) / NUM / params.coordinates.size()) << "ms/coordinate" << std::endl; }; - try - { - run_benchmark(5.0); - run_benchmark(10.0); - run_benchmark(15.0); - run_benchmark(30.0); - } - catch (const std::exception &e) - { - std::cerr << "Error: " << e.what() << std::endl; - return EXIT_FAILURE; - } + run_benchmark(std::nullopt); + run_benchmark(5.0); + run_benchmark(10.0); + run_benchmark(15.0); + run_benchmark(30.0); return EXIT_SUCCESS; }