可能重复:
for loop optimization
for-loop optimization - needed or not?
e.g。
int maxloop = complicated();
for (int i=0;i<maxloop;i++){}
或
for (int i=0;i<complicated();i++){}
编译器是否足够智能来优化它?
while
怎么办?
答案 0 :(得分:2)
不,编译器不够聪明,无法对其进行优化,因为如果complicated()
多次运行,{{1}}不会保证不会做任何不同的事情。
答案 1 :(得分:1)
实际上,您需要将输出分配给变量以避免重新计算开销。编译器不会这样做,因为您的目标可能是将方法返回值作为限制(即,您可能需要在每次迭代后重新计算限制)。要对此进行测试,只需将Thread.Sleep(5000);
放入compilcated()
方法,您就会看到等待时间。
答案 2 :(得分:0)
不,不是,因为complicated
可能是一种取决于其他复杂方法的方法,或者在每次迭代后导致不同的行为。
答案 3 :(得分:0)
编译器无法对其进行优化,因为在某些情况下“complex()”不会每次都返回相同的整数。因此,每次都执行该条件。您的第一段代码必须更高效。