全面测试JAVA各种循环的性能,for轻松胜出
2009-01-16 15:54
429 查看
郑重道歉:
由于本人的一个低级失误,造成结论错误,for才是最终的胜者。foreach和iterator是类似的机制,性能都不是很好。以下代码已经重新调整,再次道歉。
以前一直有人说,foreach的性能有损失,不建议使用,今天特意测试了一下,结果是 for方式的性能最好,foreach次之,而Iterator循环性能最差..
1 完整的测试代码
2 运行结果
测试列表的性能...
foreach= 41997864
iterator= 43951774
for= 14351289
测试数组的性能...
foreach= 1751863
for= 1484585
3 结论:
foreach的性能很一般,for才是最好的,推荐大家使用。
如果我的测试代码有问题,欢迎指正。
由于本人的一个低级失误,造成结论错误,for才是最终的胜者。foreach和iterator是类似的机制,性能都不是很好。以下代码已经重新调整,再次道歉。
以前一直有人说,foreach的性能有损失,不建议使用,今天特意测试了一下,结果是 for方式的性能最好,foreach次之,而Iterator循环性能最差..
1 完整的测试代码
import java.util.ArrayList; import java.util.Iterator; import java.util.List; /** * 测试JAVA各种循环的性能。<br> * for 方式的性能最好,foreach次之,而Iterator循环性能最差。 * * @author 老紫竹研究室(laozizhu.com) */ public class TestLoop { public static void main(String[] args) { int number = 1000000; // 我们构造一个列表 List<String> list = new ArrayList<String>(number); for (int i = 0; i < number; i++) { list.add(Integer.toString(i)); } System.out.println("测试列表的性能..."); // 我们用foreach方式测试 long begin = System.nanoTime(); for (String i : list) { testMethod(i); } System.out.printf("%10s=%10d/n", "foreach", System.nanoTime() - begin); begin = System.nanoTime(); // 下面我们用Iterator测试 Iterator<String> it = list.iterator(); while (it.hasNext()) { testMethod(it.next()); } System.out.printf("%10s=%10d/n", "iterator", (System.nanoTime() - begin)); // 第三种,我们用index进行 begin = System.nanoTime(); for (int i = 0; i < number; i++) { testMethod(list.get(i)); } System.out.printf("%10s=%10d/n", "for", (System.nanoTime() - begin)); System.out.println("测试数组的性能..."); // 我们再来测试数组 String[] strArr = new String[number]; for (int i = 0; i < number; i++) { strArr[i] = Integer.toString(i); } // 我们用foreach方式测试 begin = System.nanoTime(); for (String i : strArr) { testMethod(i); } System.out.printf("%10s=%10d/n", "foreach", System.nanoTime() - begin); // 第二种,我们用index进行 begin = System.nanoTime(); for (int i = 0; i < number; i++) { testMethod(strArr[i]); } System.out.printf("%10s=%10d/n", "for", System.nanoTime() - begin); } public static void testMethod(String str) { } }
2 运行结果
测试列表的性能...
foreach= 41997864
iterator= 43951774
for= 14351289
测试数组的性能...
foreach= 1751863
for= 1484585
3 结论:
foreach的性能很一般,for才是最好的,推荐大家使用。
如果我的测试代码有问题,欢迎指正。
相关文章推荐
- 全面测试嵌套多层For循环的性能和优化方案
- 全面测试嵌套多层For循环的性能和优化方案
- java性能优化之for循环
- 菜鸟要做架构师(二)——java性能优化之for循环
- 【Java】嵌套For循环性能优化案例
- Java for循环和foreach循环的性能比较
- 菜鸟要做架构师(二)——java性能优化之for循环
- java -- while循环拆分性能测试程序
- java for循环的各种写法
- .NET入门(九)测试各种循环结构,for,while和do while
- Java For循环效率测试
- [置顶] java性能优化之for循环
- LoadRuner轻松测试(.Net,C++,JAVA)后端服务,组件性能,压力测试
- 菜鸟要做架构师(二)——java性能优化之for循环
- Java之各种for循环对比和简单实例
- 菜鸟要做架构师(二)——java性能优化之for循环
- Java性能优化之for循环
- 【Java语言】嵌套For循环性能优化案例
- java关于for,foreach,iterator循环ArrayList的方式测试
- 单线程环境下Java/PHP/Python性能测试(循环输出)