我想要做的是採取這個C代碼,並使用一種稱爲循環展開的技術進行優化,但在這種情況下,我想使用四維循環,雙向循環展開。現在,我理解了這一技術,並理解了我只是不知道如何將其應用於此代碼的概念。我必須添加一些額外的變量嗎?每次循環後還是僅在所有循環結束時都必須有一些代碼?這個代碼是8x8塊代碼,處理像素並將其旋轉90度計數器時鐘。任何幫助將不勝感激。謝謝。我想優化這個C代碼使用4路循環展開
/*
* rotate8 - rotate with 8x8 blocking
*/
char rotate8_descr[] = "rotate8: rotate with 8x8 blocking";
void rotate8(int dim, pixel *src, pixel *dst)
{
int i, j, ii, jj;
for(ii = 0; ii < dim; ii += 8)
for(jj = 0; jj < dim; jj += 8)
for (i = ii; i < ii + 8; i++)
for (j = jj; j < jj + 8; j++)
dst[RIDX(dim-1-j, i, dim)] = src[RIDX(i, j, dim)];
}
你可能想修復語法突出顯示 – Amro 2009-10-01 05:43:52
你是否分析過這個並確定它是一個問題? – GManNickG 2009-10-01 05:48:21
此外,請考慮使用更多的描述性名稱,如「頂部,底部,左側,右側」,而不是「i,ii,j,jj」。很難閱讀。 – GManNickG 2009-10-01 05:49:24