Improve map matching benchmark

This commit is contained in:
Siarhei Fedartsou 2024-05-19 11:23:41 +02:00
parent 89fce286a7
commit fb14189cbb

View File

@ -12,13 +12,15 @@
#include <boost/assert.hpp> #include <boost/assert.hpp>
#include <boost/optional/optional.hpp>
#include <cstdlib>
#include <exception> #include <exception>
#include <iostream> #include <iostream>
#include <optional>
#include <stdexcept>
#include <string> #include <string>
#include <utility> #include <utility>
#include <cstdlib>
int main(int argc, const char *argv[]) int main(int argc, const char *argv[])
try try
{ {
@ -213,6 +215,20 @@ try
FloatCoordinate{FloatLongitude{7.415513992309569}, FloatLatitude{43.73347615145474}}); FloatCoordinate{FloatLongitude{7.415513992309569}, FloatLatitude{43.73347615145474}});
params.coordinates.push_back( params.coordinates.push_back(
FloatCoordinate{FloatLongitude{7.415342330932617}, FloatLatitude{43.733251335381205}}); FloatCoordinate{FloatLongitude{7.415342330932617}, FloatLatitude{43.733251335381205}});
for (size_t index = 0; index < params.coordinates.size(); ++index)
{
params.radiuses.emplace_back();
}
auto run_benchmark = [&](std::optional<double> radiusInMeters)
{
if (radiusInMeters)
{
for (auto &radius : params.radiuses)
{
radius = *radiusInMeters;
}
}
TIMER_START(routes); TIMER_START(routes);
auto NUM = 100; auto NUM = 100;
@ -224,14 +240,29 @@ try
if (rc != Status::Ok || if (rc != Status::Ok ||
json_result.values.at("matchings").get<json::Array>().values.size() != 1) json_result.values.at("matchings").get<json::Array>().values.size() != 1)
{ {
return EXIT_FAILURE; throw std::runtime_error{"Couldn't match"};
} }
} }
TIMER_STOP(routes); 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() std::cout << (TIMER_MSEC(routes) / NUM) << "ms/req at " << params.coordinates.size()
<< " coordinate" << std::endl; << " coordinate" << std::endl;
std::cout << (TIMER_MSEC(routes) / NUM / params.coordinates.size()) << "ms/coordinate" std::cout << (TIMER_MSEC(routes) / NUM / params.coordinates.size()) << "ms/coordinate"
<< std::endl; << std::endl;
};
run_benchmark(std::nullopt);
run_benchmark(5.0);
run_benchmark(10.0);
run_benchmark(15.0);
run_benchmark(30.0);
return EXIT_SUCCESS; return EXIT_SUCCESS;
} }