gpt4 book ai didi

java - 简单的循环性能问题

转载 作者:行者123 更新时间:2023-12-02 00:59:41 25 4
gpt4 key购买 nike

假设我有一个像这样的简单 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com