Учитывая следующий код:
const int vector_size = 100000;
const int count = 10000;
double test_array[vector_size];
auto s1 = std::chrono::high_resolution_clock::now();
for (auto i = 0; i < count; i++) {
std::iota(std::begin(test_array), std::end(test_array), i);
std::accumulate(std::begin(test_array), std::end(test_array), 0);
}
auto e1 = std::chrono::high_resolution_clock::now();
auto s2 = std::chrono::high_resolution_clock::now();
for (auto i = 0; i < count; i++) {
std::iota(std::begin(test_array), std::end(test_array), i);
std::reduce(std::execution::par, std::begin(test_array), std::end(test_array), 0);
}
auto e2 = std::chrono::high_resolution_clock::now();
std::cout << std::chrono::duration_cast<std::chrono::milliseconds>(e1 - s1).count() << "ms" << std::endl;
std::cout << std::chrono::duration_cast<std::chrono::milliseconds>(e2 - s2).count() << "ms" << std::endl;
Почему std :: накапливается быстрее, чем std :: lower, выполняемый параллельно? Это параллельные накладные расходы? Или я пропускаю точку там?