Java两种循环写法性能对比:哪一种循环的执行速度更快?
性能结论
这两种循环写法的运行速度不存在可观测的差异,绝大多数场景下性能完全一致。
底层逻辑说明
Java 即时编译器(JIT)会对代码做逃逸分析和栈空间优化,两种写法里的index本质都是栈上分配的临时变量,生命周期都局限在循环逻辑范围内:
- 写法1在循环体内声明变量,每次循环的变量都会占用栈帧的固定空间,不会产生额外的创建、销毁开销
- 写法2把变量声明提到循环外,栈上分配的空间大小和写法1完全相同,没有额外的性能增益
两种写法编译后的字节码几乎没有区别,运行时性能不会有差距。
更建议的优化方案
你给出的两种写法都存在明显的性能浪费:myList.indexOf(key)本身的时间复杂度是O(n),搭配外层O(n)的循环,整体时间复杂度达到了O(n²)。如果你的需求是同时拿到列表的下标和对应元素,完全可以用普通for循环代替增强for循环:
for (int i = 0; i < myList.size(); i++) { String key = myList.get(i); System.out.println(i); }
这个写法的整体时间复杂度是O(n),列表元素越多,性能优势越明显。
内容的提问来源于stack exchange,提问作者Ziv Sion
相关产品推荐
相关产品推荐

