[geocoder] Fix for review

This commit is contained in:
Anatoly Serdtcev 2019-02-08 11:22:50 +03:00
parent c2d0fc4d13
commit d1ce5c1395
5 changed files with 17 additions and 24 deletions

View file

@ -119,10 +119,8 @@ public:
std::vector<Layer> 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<Result> & results) const;

View file

@ -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<multimap<base::GeoObjectId, Entry>> taskEntries(readersCount);
vector<ParsingStats> tasksStats(readersCount);
@ -142,7 +140,7 @@ void HierarchyReader::CheckDuplicateOsmIds(vector<geocoder::Hierarchy::Entry> 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<int64_t>(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<string> 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<uint64_t>(encodedId));
entry.m_osmId = osmId;

View file

@ -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<base::GeoObjectId, Entry> & entries, ParsingStats & stats);

View file

@ -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();

View file

@ -21,8 +21,7 @@ public:
// that the index was constructed from.
using DocId = std::vector<Doc>::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;