1) C++ threads...
x1 * x2 * ... x*n
thread1: p1 = x1 * ... * xn/4
thread2: p2 = x(n/4 + 1) * ....x(n/2)
....
p = p1 * p2 * p3 * p4
n 大, 效果好... n 小 没啥效果
-----------------
2) OpenMP
#pragma omp parallel for reducation(*:product)
for(int idx:b){
product *= a[idx];
}
s = b.size();
不过 for 要写成 for (i = 0; i < s; i++) 形式, 换个形式即可.
编译器打开 OpenMP...
【 在 Akyrum 的大作中提到: 】
: mark 偶折腾过这问题,最后憋出来的算法只比1个个累乘快不到50%,lz有什么好方法到时候分享出来~
:
https://www.newsmth.net/nForum/#!article/CPlusPlus/408825--
FROM 142.59.143.*