首先,我想知道什麼是循環優化和改造之間的根本區別,也何時以及如何正確使用循環優化和轉化技術
C中的一個簡單的循環如下:
for (i = 0; i < N; i++)
{
a[i] = b[i]*c[i];
}
但我們可以展開它:
for (i = 0; i < N/2; i++)
{
a[i*2] = b[i*2]*c[i*2];
a[i*2 + 1] = b[i*2 + 1]*c[i*2 + 1];
}
,但我們可以進一步展開它..但是我們可以展開它的限制是什麼,以及我們如何找到它。
還有更多的技術,如循環耕種,循環分佈等。 ,如何確定何時使用適當的。
爲什麼不讓你的編譯器爲你做這個?確保優化已啓用,然後出去做點有趣的事情。 – 2011-12-18 14:13:11
編譯器如何決定......出於好奇。 – sum2000 2011-12-18 14:14:16
@pmg它不是我的,它來自Wayner Wolf,它是一本很好的書 – sum2000 2011-12-18 14:25:30