据我所知,第二个和第三个表达式每次都在 for 循环中执行。
我总是理所当然地认为性能明智的第二个选择是推荐的,有人可以证实这一点吗?
1)for($i=0;$i<=dosomething();$i++) [...]
2)
$max = dosomething();
for($i=0;$i<=$max;$i++) [...]
据我所知,第二个和第三个表达式每次都在 for 循环中执行。
我总是理所当然地认为性能明智的第二个选择是推荐的,有人可以证实这一点吗?
1)for($i=0;$i<=dosomething();$i++) [...]
2)
$max = dosomething();
for($i=0;$i<=$max;$i++) [...]
您不应该在循环定义中调用函数,因为该函数将在每次迭代时执行。当您只有一个小循环时,效果可以忽略不计,但是如果您有数百或数千次迭代的循环,您肯定会注意到。
但即使你只有一个小循环,这也是不好的做法。所以一句话:不要。
除非您的 dosomething() 函数返回不同的值并且可以一次性完成,否则最好使用第二种方法。
$options = 数组(1,2,3,4,5);$element_count = count($options);
像 count() 这样在多次调用中返回相同值的函数可以保存在一个变量中,并在 for 循环中使用。
如果您对性能非常严格,请使用 ++$i 而不是 $i++
第二种方法总是会更好地执行,特别是如果在 doSomething() 中有大量工作要做。如果你只做几十个循环,而 doSomething() 只是返回一个局部变量,那么它不会产生明显的差异。
是的,我确认您可以根据需要搜索基准。
虽然我不知道这是否是真的,如果它只是一个对象的吸气剂