diff --git a/src/benchmarks/match.cpp b/src/benchmarks/match.cpp index caed1a00b..83ef7ef1b 100644 --- a/src/benchmarks/match.cpp +++ b/src/benchmarks/match.cpp @@ -11,14 +11,14 @@ #include "osrm/status.hpp" #include - +#include #include #include +#include +#include #include #include -#include - int main(int argc, const char *argv[]) try { @@ -214,24 +214,49 @@ try params.coordinates.push_back( FloatCoordinate{FloatLongitude{7.415342330932617}, FloatLatitude{43.733251335381205}}); - TIMER_START(routes); - auto NUM = 100; - for (int i = 0; i < NUM; ++i) + auto run_benchmark = [&](std::optional radiusInMeters) { - engine::api::ResultT result = json::Object(); - const auto rc = osrm.Match(params, result); - auto &json_result = result.get(); - if (rc != Status::Ok || - json_result.values.at("matchings").get().values.size() != 1) + params.radiuses = {}; + if (radiusInMeters) { - return EXIT_FAILURE; + for (size_t index = 0; index < params.coordinates.size(); ++index) + { + params.radiuses.emplace_back(*radiusInMeters); + } } + + TIMER_START(routes); + auto NUM = 100; + for (int i = 0; i < NUM; ++i) + { + engine::api::ResultT result = json::Object(); + const auto rc = osrm.Match(params, result); + auto &json_result = result.get(); + if (rc != Status::Ok || + json_result.values.at("matchings").get().values.size() != 1) + { + throw std::runtime_error{"Couldn't match"}; + } + } + TIMER_STOP(routes); + 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; + }; + + for (auto radius : std::vector>{std::nullopt, 5.0, 10.0, 15.0, 30.0}) + { + run_benchmark(radius); } - TIMER_STOP(routes); - 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; return EXIT_SUCCESS; } @@ -239,4 +264,4 @@ catch (const std::exception &e) { std::cerr << "Error: " << e.what() << std::endl; return EXIT_FAILURE; -} +} \ No newline at end of file