From d1ce5c1395b06a8de146dd7d4ec45ca63313df7c Mon Sep 17 00:00:00 2001 From: Anatoly Serdtcev Date: Fri, 8 Feb 2019 11:22:50 +0300 Subject: [PATCH] [geocoder] Fix for review --- geocoder/geocoder.hpp | 6 ++---- geocoder/hierarchy_reader.cpp | 26 ++++++++++++-------------- geocoder/hierarchy_reader.hpp | 2 +- geocoder/index.cpp | 4 +--- geocoder/index.hpp | 3 +-- 5 files changed, 17 insertions(+), 24 deletions(-) diff --git a/geocoder/geocoder.hpp b/geocoder/geocoder.hpp index ff6542afdd..8b4a74a95d 100644 --- a/geocoder/geocoder.hpp +++ b/geocoder/geocoder.hpp @@ -119,10 +119,8 @@ public: std::vector m_layers; }; - explicit Geocoder(std::string const & pathToJsonHierarchy, - unsigned int loadThreadsCount = std::thread::hardware_concurrency()); - explicit Geocoder(std::istream & jsonHierarchy, - unsigned int loadThreadsCount = std::thread::hardware_concurrency()); + explicit Geocoder(std::string const & pathToJsonHierarchy, unsigned int loadThreadsCount = 1); + explicit Geocoder(std::istream & jsonHierarchy, unsigned int loadThreadsCount = 1); void ProcessQuery(std::string const & query, std::vector & results) const; diff --git a/geocoder/hierarchy_reader.cpp b/geocoder/hierarchy_reader.cpp index cee535707b..c59ff8b356 100644 --- a/geocoder/hierarchy_reader.cpp +++ b/geocoder/hierarchy_reader.cpp @@ -25,14 +25,14 @@ void operator+=(Hierarchy::ParsingStats & accumulator, Hierarchy::ParsingStats & static_assert(sizeof(Hierarchy::ParsingStats) == sizeof(ValidationStats), "Hierarchy::ParsingStats has been modified"); - accumulator.m_numLoaded += stats.m_numLoaded; - accumulator.m_badJsons += stats.m_badJsons; - accumulator.m_badOsmIds += stats.m_badOsmIds; - accumulator.m_duplicateOsmIds += stats.m_duplicateOsmIds; - accumulator.m_duplicateAddresses += stats.m_duplicateAddresses; - accumulator.m_emptyAddresses += stats.m_emptyAddresses; - accumulator.m_emptyNames += stats.m_emptyNames; - accumulator.m_mismatchedNames += stats.m_mismatchedNames; + accumulator.m_numLoaded += stats.m_numLoaded; + accumulator.m_badJsons += stats.m_badJsons; + accumulator.m_badOsmIds += stats.m_badOsmIds; + accumulator.m_duplicateOsmIds += stats.m_duplicateOsmIds; + accumulator.m_duplicateAddresses += stats.m_duplicateAddresses; + accumulator.m_emptyAddresses += stats.m_emptyAddresses; + accumulator.m_emptyNames += stats.m_emptyNames; + accumulator.m_mismatchedNames += stats.m_mismatchedNames; } } // namespace @@ -50,11 +50,9 @@ HierarchyReader::HierarchyReader(istream & in) Hierarchy HierarchyReader::Read(unsigned int readersCount) { - LOG(LINFO, ("Reading entries...")); + CHECK_GREATER_OR_EQUAL(readersCount, 1, ()); - if (auto hardwareConcurrency = thread::hardware_concurrency()) - readersCount = min(hardwareConcurrency, readersCount); - readersCount = max(1U, readersCount); + LOG(LINFO, ("Reading entries...")); vector> taskEntries(readersCount); vector tasksStats(readersCount); @@ -142,7 +140,7 @@ void HierarchyReader::CheckDuplicateOsmIds(vector co if (j != i + 1) { ++stats.m_duplicateOsmIds; - // todo Remove the cast when the hierarchies no longer contain negative keys. + // TODO: Remove the cast when the hierarchies no longer contain negative keys. LOG(LDEBUG, ("Duplicate osm id:", static_cast(entries[i].m_osmId.GetEncodedId()), "(", entries[i].m_osmId, ")", "occurs as a key in", j - i, "key-value entries.")); @@ -204,7 +202,7 @@ void HierarchyReader::DeserializeEntryMap(vector const & linesBuffer, si auto json = line.substr(p + 1); Entry entry; - // todo(@m) We should really write uints as uints. + // TODO: (@m) We should really write uints as uints. auto const osmId = base::GeoObjectId(static_cast(encodedId)); entry.m_osmId = osmId; diff --git a/geocoder/hierarchy_reader.hpp b/geocoder/hierarchy_reader.hpp index d434fff607..19701659f0 100644 --- a/geocoder/hierarchy_reader.hpp +++ b/geocoder/hierarchy_reader.hpp @@ -27,7 +27,7 @@ public: explicit HierarchyReader(std::istream & jsonHierarchy); // Read hierarchy file/stream concurrently in |readersCount| threads. - Hierarchy Read(unsigned int readersCount = std::thread::hardware_concurrency()); + Hierarchy Read(unsigned int readersCount = 1); private: void ReadEntryMap(std::multimap & entries, ParsingStats & stats); diff --git a/geocoder/index.cpp b/geocoder/index.cpp index 60c565bf49..fa6bc2b178 100644 --- a/geocoder/index.cpp +++ b/geocoder/index.cpp @@ -26,9 +26,7 @@ namespace geocoder Index::Index(Hierarchy const & hierarchy, unsigned int loadThreadsCount) : m_docs(hierarchy.GetEntries()) { - if (auto hardwareConcurrency = thread::hardware_concurrency()) - loadThreadsCount = min(hardwareConcurrency, loadThreadsCount); - loadThreadsCount = max(1U, loadThreadsCount); + CHECK_GREATER_OR_EQUAL(loadThreadsCount, 1, ()); LOG(LINFO, ("Indexing hierarchy entries...")); AddEntries(); diff --git a/geocoder/index.hpp b/geocoder/index.hpp index 35e9e8d6cb..fb1cf51437 100644 --- a/geocoder/index.hpp +++ b/geocoder/index.hpp @@ -21,8 +21,7 @@ public: // that the index was constructed from. using DocId = std::vector::size_type; - explicit Index(Hierarchy const & hierarchy, - unsigned int loadThreadsCount = std::thread::hardware_concurrency()); + explicit Index(Hierarchy const & hierarchy, unsigned int loadThreadsCount = 1); Doc const & GetDoc(DocId const id) const;