C ++ 17 уменьшает и накапливает скорость - PullRequest
0 голосов
/ 23 октября 2019

Учитывая следующий код:

    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, выполняемый параллельно? Это параллельные накладные расходы? Или я пропускаю точку там?

...