【问题标题】:increment specific elements of array with intrinsics使用内在函数增加数组的特定元素
【发布时间】:2018-03-06 14:32:22
【问题描述】:

我正在使用 C++。我有 2 个短元素数组。首先是值,第二个是第一个数组的索引,应该递增。我有这样的代码:

const int N1=...;
const int N2=...;
int arr1[N1];
int arr2[N2];
....
for (int i = 0;i<N2;i++)
    arr1[arr2[i]]++;

我想优化这段代码的时间。我想使用内在函数。是否可以为此以及如何使用内在函数。

【问题讨论】:

    标签: c++ intrinsics


    【解决方案1】:

    我想你可以尝试使用 std::for_eachstd::execution::parallel_policy 并行化它

    std::for_each(std::execution::par,
                  arr2,
                  arr2 + N2,
                  [arr1](int i){ arr1[i]++; });
    

    请注意,这需要访问支持 C++17 的编译器。

    【讨论】:

    • 但请注意:如果 arr2 中的值不是唯一的,则此代码会通过数据竞争表现出未定义的行为。
    猜你喜欢
    • 2019-12-18
    • 2018-10-26
    • 2021-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-24
    相关资源
    最近更新 更多