On Wednesday, August 24, 2011 21:29:23 Timon Gehr wrote: > On 08/24/2011 09:21 PM, Andrej Mitrovic wrote: > > On 8/24/11, Timon Gehr<timon.g...@gmx.ch> wrote: > >> it is usually faster > >> in debug mode > > > > Huh.. How come? > > Well, not notably faster, but many compilers will emit something in the > lines of > > mov eax, 1 > test eax > jnz beginning_of_loop > > if no optimizer is run, > > whereas most get > > for(;;){} > > as > > jmp beginning_of_loop > > even in debug mode.
Optimizations aside, I would always argue that while(true) should be used rather than for(;;). I find for(;;) to be ugly personally and would argue that while(true) better captures what you're actually doing. A loop with no condition at all is horrible IMHO. It seems completely inconsistent to me that the language would allow you to have a for loop without a condition. Regardless of that, however, I would fully expect that if there is a difference in code between the two in debug mode (which there shouldn't be IMHO, but compilers don't always do what makes the most sense - especially in debug mode) that the difference would be drowned by the contents of the loop and wouldn't matter at all. But even if it did, I'd generally argue that coding in a certain way just because it was slightly faster in debug mode but had zero impact in release mode is not a good idea unless all of the considerations are equal. And I'd definitely argue that while(true) is better than for(;;) from an aesthetic point of view at minimum, so they definitely aren't equal. In any case, that's my take on it. - Jonathan M Davis