From f0ac508acdb12bb6dd569a085c20b6aed457fe38 Mon Sep 17 00:00:00 2001 From: Mikhail Gorbushin Date: Sun, 24 Nov 2019 22:24:26 +0300 Subject: [PATCH] [routing] Add --lounches_number param instead of --benchmark --- routing/routes_builder/routes_builder.cpp | 5 ++--- routing/routes_builder/routes_builder.hpp | 2 +- .../routes_builder_tool/routes_builder_tool.cpp | 16 ++++++++++++---- .../routes_builder/routes_builder_tool/utils.cpp | 4 ++-- .../routes_builder/routes_builder_tool/utils.hpp | 2 +- 5 files changed, 18 insertions(+), 11 deletions(-) diff --git a/routing/routes_builder/routes_builder.cpp b/routing/routes_builder/routes_builder.cpp index 9ba2d6c000..c427f6c692 100644 --- a/routing/routes_builder/routes_builder.cpp +++ b/routing/routes_builder/routes_builder.cpp @@ -298,8 +298,7 @@ RoutesBuilder::Processor::operator()(Params const & params) CHECK(m_dataSource, ()); double timeSum = 0; - size_t numberOfBuilds = params.m_benchmarkMode ? 3 : 1; - for (size_t i = 0; i < numberOfBuilds; ++i) + for (size_t i = 0; i < params.m_lounchesNumber; ++i) { m_delegate->SetTimeout(params.m_timeoutSeconds); base::Timer timer; @@ -315,7 +314,7 @@ RoutesBuilder::Processor::operator()(Params const & params) Result result; result.m_params.m_checkpoints = params.m_checkpoints; result.m_code = resultCode; - result.m_buildTimeSeconds = timeSum / static_cast(numberOfBuilds); + result.m_buildTimeSeconds = timeSum / static_cast(params.m_lounchesNumber); RoutesBuilder::Route routeResult; routeResult.m_distance = route.GetTotalDistanceMeters(); diff --git a/routing/routes_builder/routes_builder.hpp b/routing/routes_builder/routes_builder.hpp index 45cb4fab56..e12f592dfe 100644 --- a/routing/routes_builder/routes_builder.hpp +++ b/routing/routes_builder/routes_builder.hpp @@ -62,7 +62,7 @@ public: VehicleType m_type = VehicleType::Car; Checkpoints m_checkpoints; uint32_t m_timeoutSeconds = RouterDelegate::kNoTimeout; - bool m_benchmarkMode = false; + uint32_t m_lounchesNumber = 1; }; struct Route diff --git a/routing/routes_builder/routes_builder_tool/routes_builder_tool.cpp b/routing/routes_builder/routes_builder_tool/routes_builder_tool.cpp index 055fee052c..7ea170eeb3 100644 --- a/routing/routes_builder/routes_builder_tool/routes_builder_tool.cpp +++ b/routing/routes_builder/routes_builder_tool/routes_builder_tool.cpp @@ -38,7 +38,8 @@ DEFINE_int32(timeout, 10 * 60, "Timeout in seconds for each route building. " "0 means without timeout (default: 10 minutes)."); DEFINE_bool(verbose, false, "Verbose logging (default: false)"); -DEFINE_bool(benchmark, false, "Builds each route 3 times and averages the time building."); + +DEFINE_int32(lounches_number, 1, "Number of lounches of routes buildings. Needs for benchmarking (default: 1)"); using namespace routing; using namespace routes_builder; @@ -89,6 +90,8 @@ int Main(int argc, char ** argv) ("\n\n\t--dump_path is empty. It makes no sense to run this tool. No result will be saved.", "\n\nType --help for usage.")); + CHECK_GREATER_OR_EQUAL(FLAGS_lounches_number, 1, ()); + if (Platform::IsFileExistsByFullPath(FLAGS_dump_path)) CheckDirExistence(FLAGS_dump_path); else @@ -96,10 +99,15 @@ int Main(int argc, char ** argv) if (IsLocalBuild()) { - if (FLAGS_benchmark) - LOG(LINFO, ("Benchmark mode is activated. Each route will build 3 times.")); + auto const lunchesNumber = static_cast(FLAGS_lounches_number); + if (lunchesNumber > 1) + { + LOG(LINFO, + ("Benchmark mode is activated. Each route will be build", lunchesNumber, " times.")); + } + BuildRoutes(FLAGS_routes_file, FLAGS_dump_path, FLAGS_start_from, FLAGS_threads, FLAGS_timeout, - FLAGS_verbose, FLAGS_benchmark); + FLAGS_verbose, lunchesNumber); } if (IsApiBuild()) diff --git a/routing/routes_builder/routes_builder_tool/utils.cpp b/routing/routes_builder/routes_builder_tool/utils.cpp index 983f2b9604..03978f2d9e 100644 --- a/routing/routes_builder/routes_builder_tool/utils.cpp +++ b/routing/routes_builder/routes_builder_tool/utils.cpp @@ -54,7 +54,7 @@ void BuildRoutes(std::string const & routesPath, uint64_t threadsNumber, uint32_t timeoutPerRouteSeconds, bool verbose, - bool benchmarkMode) + uint32_t lunchesNumber) { CHECK(Platform::IsFileExistsByFullPath(routesPath), ("Can not find file:", routesPath)); CHECK(!dumpPath.empty(), ("Empty dumpPath.")); @@ -77,7 +77,7 @@ void BuildRoutes(std::string const & routesPath, RoutesBuilder::Params params; params.m_type = VehicleType::Car; params.m_timeoutSeconds = timeoutPerRouteSeconds; - params.m_benchmarkMode = benchmarkMode; + params.m_lounchesNumber = lunchesNumber; base::ScopedLogLevelChanger changer(verbose ? base::LogLevel::LINFO : base::LogLevel::LERROR); ms::LatLon start; diff --git a/routing/routes_builder/routes_builder_tool/utils.hpp b/routing/routes_builder/routes_builder_tool/utils.hpp index f770a884ca..fe291a67fc 100644 --- a/routing/routes_builder/routes_builder_tool/utils.hpp +++ b/routing/routes_builder/routes_builder_tool/utils.hpp @@ -19,7 +19,7 @@ void BuildRoutes(std::string const & routesPath, uint64_t threadsNumber, uint32_t timeoutPerRouteSeconds, bool verbose, - bool benchmarkMode); + uint32_t launchNumber); void BuildRoutesWithApi(std::unique_ptr routingApi, std::string const & routesPath,