【发布时间】:2009-10-01 05:42:01
【问题描述】:
我要做的是获取这个 C 代码并使用一种称为循环展开的技术对其进行优化,但在这种情况下,我想使用四向循环展开。现在,我了解了这项技术,也了解了我只是不知道如何将其应用于此代码的概念。我必须添加一些额外的变量吗?我必须在每个循环之后还是在所有循环结束时都有一些代码?此代码是 8x8 块代码,用于处理获取像素并将其逆时针旋转 90 度。任何帮助将不胜感激。谢谢。
/*
* 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)];
}
【问题讨论】:
-
你可能想修复语法高亮
-
您是否对此进行了分析并确定这是一个问题?
-
另外,考虑使用更具描述性的名称,例如“上、下、左、右”,而不是“i、ii、j、jj”。很难阅读。
-
两个内部循环可能会通过使用 UInt64 和位移来提高速度。
-
你为什么要在问题的末尾加上[关闭]?这并不意味着“回答”......
标签: c