技术编程|Java8的forEach效率真的不如for循环吗
【技术编程|Java8的forEach效率真的不如for循环吗】前段时间在论坛里看到有同学做过实验 , 对for循环和forEach循环每个执行一千万次 , for循环耗时7.864毫秒 , forEach循环耗时23.638毫秒 , 然后得出结论for循环的性能远远大于forEach循环 , 我觉得这是不严谨的 。
首先JVM的Hot Spot采用JIT技术 , 它会将运行频率很高的字节码直接编译为机器指令以提高性能;其次JVM执行某一方法或遍历循环的次数越多就会越了解代码结构并作出相应的优化 。JMH 简介
JMH是代码基准测试的工具套件 , 精度可以达到纳秒级 。该工具是Oracle实现JIT的大牛们编写 , 我相信他们比任何人都了解JIT以及JVM对基准测试的影响 。JDK9自带JMH , 我的版本是JDK8 , 需要引入依赖
文章图片
文章图片
基准测试类
基准测试类如下 , 增强的for循环和forEach分别循环一千万次 , 循环体里面执行3个操作 , 转小写字母 , 转大写字母和计算哈希码 。
文章图片
文章图片
测试结果
文章图片
文章图片
从测试结果可以看出 , 增强的for循环耗时846.347毫秒 , 而forEach耗时842.518毫秒 , 差别不大 , 甚至forEach要稍微优于增强的for循环 。
推荐阅读
- 行业互联网|华为 | 车载以太网物理层及TSN发展现状 与技术趋势
- 技术编程|什么是Plesk虚拟主机控制面板?
- 电池技术|法国发明出世界最快的电极:可将锂电池的密度提高3倍
- 技术编程|人工智能在大视频运维中如何实现CDN硬盘故障预测?
- 电池技术|关于惠州赣锋建设高端聚合物锂电池研发及生产基地建设,赣锋锂业要干大事
- |加速冲刺世界级技术领先地位,大族机器人获1.65亿元A轮融资
- 解码器|苹果 ProRes 视频编解码器获 2020 技术工程艾美奖
- 数据|徐叶润:另类数据技术是驱动资管科技的核心
- 中年|《经济学人》封面文章解析蚂蚁集团:数字技术的崛起代表了金融的未来
- 行业互联网|北科院轻工所技术入选中关村论坛技术交易大会“产业创新领先技术百强项目榜单”
