Java8的forEach效率真的不如for循环吗
前段时间在论坛里看到有同学做过实验 , 对for循环和forEach循环每个执行一千万次 , for循环耗时7.864毫秒 , forEach循环耗时23.638毫秒 , 然后得出结论for循环的性能远远大于forEach循环 , 我觉得这是不严谨的 。
首先JVM的HotSpot采用JIT技术 , 它会将运行频率很高的字节码直接编译为机器指令以提高性能;其次JVM执行某一方法或遍历循环的次数越多就会越了解代码结构并作出相应的优化 。 JMH简介
JMH是代码基准测试的工具套件 , 精度可以达到纳秒级 。 该工具是Oracle实现JIT的大牛们编写 , 我相信他们比任何人都了解JIT以及JVM对基准测试的影响 。 JDK9自带JMH , 我的版本是JDK8 , 需要引入依赖

文章图片
基准测试类
【Java8的forEach效率真的不如for循环吗】基准测试类如下 , 增强的for循环和forEach分别循环一千万次 , 循环体里面执行3个操作 , 转小写字母 , 转大写字母和计算哈希码 。

文章图片
测试结果

文章图片
从测试结果可以看出 , 增强的for循环耗时846.347毫秒 , 而forEach耗时842.518毫秒 , 差别不大 , 甚至forEach要稍微优于增强的for循环 。
推荐阅读
- 养老金|2021年上半年办理退休,养老金核算的这些知识要把握
- 量化|量化大师麦教授:美好的不确定性
- 浪胃仙|泡泡龙的离世给所有吃播提了醒,浪胃仙顺势决定“转行”,新职业认真的吗?
- 脑梗死|脑梗死和喝酒有没有关系呢?爱喝酒的朋友,应该看看
- 米歇尔·戴斯玛克特|海奥华预言的真相,地球人被带到九级文明,揭开神话背后的秘密
- 减肥也能吃的小零食,营养美味,低脂低热量,多吃也不怕!
- 1碗面粉,不加水,锅里蒸一蒸,做香甜可口的发糕,比蛋糕还香
- 扇贝最好吃的做法,适合冬日里吃,做法简单好吃不腻,家人超爱吃
- 七种颜色的布丁吃过没有?软糯爽口,Q弹软糯
- 爱吃南瓜饼的收藏,外酥里嫩,香甜软糯,饭桌上必备,做法超简单
