【发布时间】:2015-04-28 10:34:54
【问题描述】:
我最近一直在查看代码并注意到在 for 循环中使用了这种语法
for(int i = 0, len = myArray.length; i < len; i++){
//some code
}
相对于:
for(int i = 0; i < myArray.length; i++){
//some code
}
理由是它更有效,因为您不必在每个循环中一直查找 myArray.length 属性。
我创建了一个测试来检查是否是这种情况,在我的所有测试中,第一个 for 循环方法都比第二个快得多(大约 70%)。
我很好奇为什么这种语法没有被更广泛地采用,并且我认为这是在数组中使用 for 循环的更好方法是正确的。
【问题讨论】:
-
“我很好奇为什么这种语法没有被更广泛地采用,我认为它是在数组中使用 for 循环的更好方法是正确的。”因为今天大多数人都使用迭代器:-)
-
恕我直言,第一个语法没有被广泛使用,因为它是一种微优化,如果你需要挤出这么多的性能,可能你必须重新考虑很多事情,
for循环可能做最后一个。 -
这很好。即使我不喜欢在 for 循环中使用 .size() 和 .length() 方法。更可接受的方法是 for(String str: myarray){}
-
请记住,如果数组长度在循环中发生变化,第一个将解开。
-
当从方法调用(例如 list.size())而不是字段访问(array.长度)。