-6
循环融合,这是否意味着在上面的代码将成为
for(j=1; j<=4,j++){
a[j]=3;
a[j]=a[j]*2*h;
b[j]=6;
b[j]=b[j]+3*k*k;
}
循环融合,这是否意味着在上面的代码将成为
for(j=1; j<=4,j++){
a[j]=3;
a[j]=a[j]*2*h;
b[j]=6;
b[j]=b[j]+3*k*k;
}
除了使用了两个独立的回路,原代码中包含大量冗余的语句。一个可能的改进是这样的:
int tmp = 6 * h;
for (j = 1; j <= 4; j++) {
a[j] = tmp;
b[j] = 6 + 3 * j * j;
}
主要优化:
您应该知道,大部分无论如何,这些优化将由编译器完成。
好的答案,弗兰克,但他应该自己做功课,所以他学习。最好是投票结束这些问题。 –
@PaulOgilvie:你错了。 http://meta.stackexchange.com/q/147100/155739 –
@PaulOgilvie:在回答问题之前,我确实犹豫了,正是因为这个原因。但是,我希望他会从答案中学到一些东西。他仍然需要计算操作的数量,通过这样做,必须考虑两种实现的差异。 –