【发布时间】:2010-04-30 21:28:13
【问题描述】:
我这里有一个循环,我想让它运行得更快。我正在传递一个大数组。我最近听说达夫的设备可以应用于这个for循环吗?有什么想法吗?
for (i = 0; i < dim; i++) {
for (j = 0; j < dim; j++) {
dst[RIDX(dim-1-j, i, dim)] = src[RIDX(i, j, dim)];
}
}
【问题讨论】:
-
宏(?)
RIDX扩展为什么?dim可以是什么?这段代码将在什么架构上运行,它是用什么编译器构建的?如果不知道更多关于你在做什么,就不可能以任何有意义的方式回答你的问题。 (虽然我确信这不会阻止人们发布答案) -
RIDX 查找像素在数组中的位置。我使用的是单个数组,但 RIDX 将其设为双数组。 dim 是图像的大小。
-
向后循环;与
0相比,与内存位置相比通常使用更少的字节码。不要使用达夫的设备。 -
很可能你的编译器已经为你做了循环展开并且用干净自然的代码来做。无论如何,学习 Duff 的设备,因为你会学到一些关于 c 的东西,但不要像那样正确的代码。只是不要。
标签: c optimization duffs-device