相关疑难解决方法(0)

多线程循环的效率

问候贵族社区,

我想要以下循环:

for(i = 0; i < MAX; i++)
    A[i] = B[i] + C[i];
Run Code Online (Sandbox Code Playgroud)

这将在使用线程的共享内存四核计算机上并行运行.以下两个备选方案正在考虑由这些线程执行的代码,其中tid是线程的ID:0,1,2或3.

(为简单起见,假设MAX是4的倍数)

选项1:

for(i = tid; i < MAX; i += 4)
    A[i] = B[i] + C[i];
Run Code Online (Sandbox Code Playgroud)

选项2:

for(i = tid*(MAX/4); i < (tid+1)*(MAX/4); i++)
    A[i] = B[i] + C[i];
Run Code Online (Sandbox Code Playgroud)

我的问题是,是否有一个比另一个更有效,为什么?

c++ java performance multithreading shared-memory

7
推荐指数
2
解决办法
328
查看次数

标签 统计

c++ ×1

java ×1

multithreading ×1

performance ×1

shared-memory ×1