前沿拓展:
kb3156421
win10,干脆扔了吧 我已经受不了了 我换win8了 win10我是够够的了
问题回顾
描述的话不多说,直接上图:
看到输出结果了吗?为什么第一次和第二次的时间相差如此之多?咱们一起琢磨琢磨,,因此需要更多的编译,加载的时间
回过头去看看类加载的日志,赫然发现了A**框架的引入:
[Loaded jdk.internal.org.objectweb.a**.ClassVisitor from F:Java_JDKJDK1.8jrelibrt.jar]
[Loaded jdk.internal.org.objectweb.a**.ClassWriter from F:Java_JDKJDK1.8jrelibrt.jar]
[Loaded jdk.internal.org.objectweb.a**.ByteVector from F:Java_JDKJDK1.8jrelibrt.jar]
[Loaded jdk.internal.org.objectweb.a**.Item from F:Java_JDKJDK1.8jrelibrt.jar]
[Loaded jdk.internal.org.objectweb.a**.Metho**isitor from F:Java_JDKJDK1.8jrelibrt.jar]
[Loaded jdk.internal.org.objectweb.a**.MethodWriter from F:Java_JDKJDK1.8jrelibrt.jar]
[Loaded jdk.internal.org.objectweb.a**.Type from F:Java_JDKJDK1.8jrelibrt.jar]
[Loaded jdk.internal.org.objectweb.a**.Label from F:Java_JDKJDK1.8jrelibrt.jar]
[Loaded jdk.internal.org.objectweb.a**.Frame from F:Java_JDKJDK1.8jrelibrt.jar]
[Loaded jdk.internal.org.objectweb.a**.AnnotationVisitor from F:Java_JDKJDK1.8jrelibrt.jar]
[Loaded jdk.internal.org.objectweb.a**.AnnotationWriter from F:Java_JDKJDK1.8jrelibrt.jar]结论导致 foreach 测试时数据不正常的罪魁祸首是:Lambda表达式Lambda表达式 在应用程序中首次使用时,需要额外加载A**框架,因此需要更多的编译,加载的时间Lambda表达式的底层实现并非匿名内部类的语法糖,而是其优化版foreach 的底层实现其实和增强 for循环没有本质区别,一个是外部迭代器,一个是内部迭代器而已通过 foreach + Lambda 的写法,效率并不低,只不过需要提前进行预热(加载框架)
作者:Kerwin_链接:https://juejin.im/post/5efa93e2e51d4534634c6421
拓展知识:
kb3156421
Win10正式版系统版本号将升级为10586.318,更新编号为KB3156421。本次更新以修复问题和提升系统性能为主。 微软官目前已经发现并做出提醒:“如果你安装本次更新后,发现自己的PC出现反应慢的情况,那么你可能遇到了我们正在**处理的问题,在未来数周内我们将完成修复。关闭Cortana将缓解这个问题,我们十分期待大家能够将自己的问题和测试结果反映在帖子下方,为我们提供信息来更快更好地解决这一问题。” 目前官方尚未补丁下载,我们可关闭Cortana来缓解这一问题。
原创文章,作者:九贤生活小编,如若转载,请注明出处:http://www.wangguangwei.com/67885.html