【发布时间】:2016-06-29 21:25:16
【问题描述】:
我很难通过 Loop Unswitching 来优化以下 while 循环。我已经尝试应用来自wiki 的示例,但是我很难将它应用到while 循环中。我有以下代码:
int n = 5,
m = 5,
i = 0,
val = 0;
while (i < n ) {
j = 0;
while (j < m ) {
if (i < j ) {
val = val + i ;
}
else if ( j == i ) {
val = val - 1;
}
else {
val = val + j ;
}
j = j + 1;
}
i = i + 1;
}
并尝试通过以下方式取消切换:
while (i < n ) {
j = 0;
if (i < j ) {
while (j < m ) {
val = val + i;
j = j + 1;
}
}
if ( j == i ) {
while (j < m) {
val = val - 1;
j = j + 1;
}
}
if (i > j) {
while (j < m) {
val = val + j;
j = j + 1;
}
}
i = i + 1;
}
我可能做错了什么。
【问题讨论】:
-
您忘记提及您要达到的目标。这是XY Problem?
-
打印
val给出15。所以你想要∑n换n = 1..5?有更简单的方法来计算这一点。但我们不知道您要计算什么。 -
嗯,我有这个问题作为作业。只是试图为非切换循环和非切换循环获得相同的结果,并考虑到网上没有关于 while 循环的相关示例,我在这里尝试过。
-
UvA 的 Compilerbouw 有机会吗? ——
标签: c loops optimization compiler-optimization