有什么更好的表现?IF或正常循环的不定循环
What is better for performance? Infinitive loop with if or normal loop?
我经常看到游戏引擎在做:
for(;;) if(!frame()) break;
为什么他们只是写作:
while(frame());
,或者如果他们想使用:
for(;frame(););
有可能使用(;;(或(true(编译器可以优化更多,因为条件始终是正确的?!
这是课程的马。
在这种情况下,任何良好的优化编译器都会生成相同的代码。
老式的人在很大程度上依赖for(;;)
,因为大多数主要步骤编译器在"正常"设置警告时不会为此发出警告。我认为至少while(frame());
有点清晰一些,尽管有些人不喜欢空的循环身体,而第一种方式的环形主体也不是空的。
来自cppreference for loops:
上面的语法[a for Loop]产生代码等效 to:
{ init_statement while ( condition ) { statement iteration_expression ; } }
编译器不会读取cppReference,但他们也知道每个循环都可以写为wier loop,反之亦然。
您经常看到它的原因可能是惯例问题。我们只能猜测为什么选择它。让我推测...
考虑此循环:
for (int i=0;i < N; ++i);
{
// do something
}
您能发现错误吗?良好的编译器警告说,但是我认为这种错误的潜力或在没有身体的情况下将循环混淆了这样的理由,足以避免无尸体的循环。
有可能使用(;;(或(true(编译器可以 优化更多是因为条件始终是正确的?!
否,在所有三个版本中,有效的条件都是相同的。
相关文章:
- 嵌套的 for 循环不循环通过第二个数组
- 带有开关语句的 do-while 循环 -- 无穷循环错误
- 编写按初始值循环的循环的更好方法是什么
- 如何在重复循环中循环遍历 std::vector
- 对于循环不循环和检测字符数组 [指针和字符数组]
- 自定义对象构造函数在循环外部循环
- 为什么在我的程序中的第二个循环时,当它在循环之前循环时不起作用
- 而循环比循环更有效.可能是什么原因
- 如何在循环中循环访问两个向量
- C++ for 循环继续循环,即使它不应该循环
- 当使用文件中的getline时,循环仅循环一次
- C 数组,如果循环.如果循环忽略值并在输入值时给出错误的行
- 对于循环(内部循环时)被忽略
- 对于循环,循环次数比它必须的次数多一次
- 我的循环保持循环,并导致程序崩溃
- 数组循环在循环结束后输出垃圾
- C++ do-while 循环不循环
- C++ AMP,用于循环parallel_for_each循环
- 避免在C++循环中循环中复杂对象时最小化范围效率低下的技术
- 设置 for 循环以循环,直到检测到空字节