我发现有时将一个循环分成两个或多个循环会更快
for (i=0; i<AMT; i++) {
a[i] += c[i];
b[i] += d[i];
}
||
\/
for (i=0; i<AMT; i++) {
//a[i] += c[i];
b[i] += d[i];
}
for (i=0; i<AMT; i++) {
a[i] += c[i];
//b[i] += d[i];
}
在我的台式机 win7、AMD Phenom(tm) x6 1055T 上,双循环版本运行速度更快,时间减少了大约 1/3。
但如果我正在处理任务,
for (i=0; i<AMT; i++) {
b[i] = rand()%100;
c[i] = rand()%100;
}
将 b 和 c 的分配分成两个循环并不比一个循环快。
我认为操作系统使用一些规则来确定某些代码是否可以由多个处理器运行。
我想问我的猜测是否正确,如果我是正确的,那么多个处理器会自动(无需线程编程)用于加速我的程序的规则或场合是什么?