【发布时间】:2015-03-02 17:39:24
【问题描述】:
如果我有一个我知道需要执行 n 次的循环,有没有一种方法可以编写一个 while(或 for)循环,而无需每次都进行比较?如果没有,有没有办法进行宏转:
int i = 0;
for(i = 0; i < 5; i++) {
operation();
}
进入:
operation();
operation();
operation();
operation();
operation();
附:这是迄今为止我想出的最快的循环。
int i = 5;
while(i-- >= 0) {
operation();
}
【问题讨论】:
-
这不是你应该做的。如果更有效,您的编译器已经展开循环。
-
您为什么要这样做?它会在指令缓存中占用更多空间,需要更多指令解码,而且基本上会更糟。如果它更好,编译器不会为你转换它吗? (除非它是一块垃圾,在这种情况下你为什么要使用它?)