stat_word: seq faster than par
This commit is contained in:
parent
dfa26e7693
commit
17c4a49957
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,2 +1,3 @@
|
|||||||
cmake-build-*/
|
cmake-build-*/
|
||||||
out/
|
out/
|
||||||
|
*.tmp
|
||||||
|
@ -30,13 +30,7 @@ void stat_word(const DataSource &source) {
|
|||||||
std::string lower = tolower(str);
|
std::string lower = tolower(str);
|
||||||
std::vector<std::string> ret;
|
std::vector<std::string> ret;
|
||||||
for (auto const &word : word_list)
|
for (auto const &word : word_list)
|
||||||
if (lower.find(word) != std::string::npos) ret.push_back(word);
|
if (lower.find(word) != std::string::npos) ret.emplace_back(word);
|
||||||
return ret;
|
|
||||||
};
|
|
||||||
|
|
||||||
auto merge = [](auto const &l, auto const &r) {
|
|
||||||
std::vector<std::string> ret = l;
|
|
||||||
ret.insert(ret.end(), r.begin(), r.end());
|
|
||||||
return ret;
|
return ret;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -48,11 +42,10 @@ void stat_word(const DataSource &source) {
|
|||||||
std::transform(std::execution::par, passwords_vec.begin(), passwords_vec.end(), words.begin(), eval);
|
std::transform(std::execution::par, passwords_vec.begin(), passwords_vec.end(), words.begin(), eval);
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
timeit("merge results");
|
timeit("count results");
|
||||||
result = std::reduce(std::execution::par, words.begin(), words.end(), std::vector<std::string>{}, merge);
|
for (auto const &word : words | std::views::join) stat[word]++;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (auto const &word : result) stat[word]++;
|
|
||||||
std::vector<std::pair<std::string, size_t>> vec(stat.begin(), stat.end());
|
std::vector<std::pair<std::string, size_t>> vec(stat.begin(), stat.end());
|
||||||
std::sort(vec.begin(), vec.end(), [](auto const &lhs, auto const &rhs) { return lhs.second > rhs.second; });
|
std::sort(vec.begin(), vec.end(), [](auto const &lhs, auto const &rhs) { return lhs.second > rhs.second; });
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user