对于一项任务,我们被要求优化代码以实现“平滑”功能,描述为:
平滑函数将源图像 src 作为输入,并在目标图像 dst 中返回平滑结果。这是实现的一部分:
void naive_smooth(int dim, pixel *src, pixel *dst) {
int i, j;
for(i=0; i < dim; i++)
for(j=0; j < dim; j++)
dst[RIDX(i,j,dim)] = avg(dim, i, j, src); /* Smooth the (i,j)th pixel */
return; }
结构像素存储红色、绿色和蓝色值(整数)。函数 avg 返回第 (i,j) 个像素周围所有像素的平均值。您的任务是优化平滑(和平均)以尽可能快地运行。(注意:函数 avg 是一个本地函数,您可以完全摆脱它以通过其他方式实现平滑。)此代码(以及 avg 的实现)位于文件 kernels.c 中。
任何人都知道如何优化这个有一些建议吗?