我有以下 C++ 循环:
for (i = LEN_MAX - 1; i >= 0; i--) {
int j = i - LEN_MAX + len;
if (j < 0)
break;
int ind = a.getElem(j);
short t = ind;
ind = --c[ind];
b.setElem(ind, t);
}
我想做的是从中删除迭代之间的所有依赖关系。例如,在上面的循环中,该行ind = --c[ind]
具有迭代间依赖关系,因为要减少,我需要具有上一次迭代的值。这是我正在寻找的转换示例:
从:
for (i = 1; i < RADIX_MAX; i++) {
if (i == radix)
break;
c[i] += c[i - 1];
c[i] += temp;
}
到:
short temp = c[0];
for (i = 1; i < RADIX_MAX; i++) {
if (i == radix)
break;
c[i] += temp; //this loop no longer depends on last iteration
temp = c[i];
}
我想将相同的技术应用于我发布的第一个循环,但我不确定如何。我想这样做的原因是因为它是优化我正在使用的工具的性能所必需的。有人有想法么?