6

据我所知,第二个和第三个表达式每次都在 for 循环中执行。

我总是理所当然地认为性能明智的第二个选择是推荐的,有人可以证实这一点吗?

1)for($i=0;$i<=dosomething();$i++) [...]

2)

 $max = dosomething();
 for($i=0;$i<=$max;$i++) [...]
4

4 回答 4

5

您不应该在循环定义中调用函数,因为该函数将在每次迭代时执行。当您只有一个小循环时,效果可以忽略不计,但是如果您有数百或数千次迭代的循环,您肯定会注意到。

但即使你只有一个小循环,这也是不好的做法。所以一句话:不要。

于 2012-10-05T22:24:37.820 回答
4

除非您的 dosomething() 函数返回不同的值并且可以一次性完成,否则最好使用第二种方法。

$options = 数组(1,2,3,4,5);$element_count = count($options);

像 count() 这样在多次调用中返回相同值的函数可以保存在一个变量中,并在 for 循环中使用。

如果您对性能非常严格,请使用 ++$i 而不是 $i++

于 2012-10-05T22:05:34.767 回答
3

第二种方法总是会更好地执行,特别是如果在 doSomething() 中有大量工作要做。如果你只做几十个循环,而 doSomething() 只是返回一个局部变量,那么它不会产生明显的差异。

于 2012-10-05T21:58:34.273 回答
-2

是的,我确认您可以根据需要搜索基准。

虽然我不知道这是否是真的,如果它只是一个对象的吸气剂

于 2012-10-05T21:55:54.857 回答