-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:在回答問題之前,我確實猶豫了,正是因爲這個原因。但是,我希望他會從答案中學到一些東西。他仍然需要計算操作的數量,通過這樣做,必須考慮兩種實現的差異。 –