假设我有一个像这样的简单 PHP 循环
// Bad example
$array = array('apple','banana','cucumber');
for ($i = 1; $i < count($array); $i++) {
echo $array[$i];
}
我知道这是一个不好的做法。最好不要在循环内使用count()
。
// Nice example
$array = array('apple','banana','cucumber');
$limit = count($array);
for ($i = 1; $i < $limit; $i++) {
// do something...
}
在Java中,我会这样做
// Bad example?
String[] array = {"apple","banana","cucumber"};
for(int i = 0; i < array.length; i++){
System.out.println(array[i]);
}
问题:上面这不是一种不好的做法吗?还是和下面的例子一样?
// Nice example?
String[] array = {"apple","banana","cucumber"};
int limit = array.length;
for(int i = 0; i < limit; i++){
System.out.println(array[i]);
}
最佳答案
任何像样的编译器/解释器都应该自动优化第一个示例以匹配第二个示例(无论如何从语义上讲,如果不完全字面意思),并且可能第三个示例以匹配第四个示例。这称为循环不变优化,其中编译器识别出实体(变量、表达式等)在循环内不变(即不变)并将其删除到循环之外(宽松地说)。
如果曾经有过的话,这已经不再是不好的做法了。
关于java - 简单的循环性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8303339/