展开 while 循环
原始代码
while(i<30){
// do something
i++;
}
展开 while 循环
while(i<15){
// do something twice
i+=2;
}
我们不能如上所示展开它。我们是否总是必须像 http://en.wikipedia.org/wiki/Loop_unrolling 那样做?
original code
while(i<30){
// do something
i++;
}
unrolled while loop
while(i<15){
// do something twice
i+=2;
}
Cant we unroll it as shown above. Do we always have to do it like http://en.wikipedia.org/wiki/Loop_unrolling ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
一般来说,答案是否定的。它适用于 30 和 15,因为 30 是偶数,但它不适用于奇数。 “Duff 装置” 是为了处理一般情况而发明的。不过,它非常丑陋。
In general, the answer is no. It works for 30 and 15 because 30 is even, but it would not work as easily for odd numbers. "Duff's device" was invented to deal with general case. It is quite ugly, though.