展开一个循环

时间:2011-12-26 13:48:58

标签: loop-unrolling

原始代码

while(i<30){
// do something
i++;
}

循环展开

while(i<15){
// do something twice
i+=2;
}

我们不能如上图所示展开它。我们是否必须像http://en.wikipedia.org/wiki/Loop_unrolling那样做?

1 个答案:

答案 0 :(得分:2)

一般来说,答案是否定的。它适用于30和15,因为30是偶数,但对于奇数而言它不会那么容易。 "Duff's device"是为了处理一般情况而发明的。但这很难看。