gpt4 book ai didi

scala - Scala 为 JVM 1.7 生成字节码的优势

转载 作者:行者123 更新时间:2023-12-03 08:41:10 25 4
gpt4 key购买 nike

根据 Scala 2.10,与默认为 1.6 发出字节码相比,为 JVM 1.7 发出字节码有哪些优势(如果有)?

最佳答案

以前的 Scala 版本发出 49.0 版本的字节码,对应于 Java 5。使用 Scala 2.10 版本 the default was changed to version 50.0 ,对应于 Java 6,它的主要优点是激活该版本引入的更快的验证器,因此它应该会导致(稍微)更好的运行时性能。

正如您所注意到的,在 2.10 中,可以发出版本 51.0 字节码,它对应于 Java 7。版本 50.0 和版本 51.0 之间存在一些差异:最大的是包含 invokedynamic说明,以及与之配套的管道(见 the class file format definition 了解血腥细节)。

就 Scala 对 51.0 字节码的使用而言,尽管技术部分已经到位,但我的理解是,使用此功能的工作仍处于实验阶段。见 this EPFL presentationthis thread这表明团队正在努力获得方法句柄的性能优势,而不必引入对 Java 7 的依赖。

Scala 2.11 保留了发出版本 50.0 字节码的默认设置,但 official plan现在是使用 Scala 2.12 直接跳转到 Java 8 字节码。同时,有一个new back-end可用于 Scala 2.11,让您试用 some of the features Scala 2.12 的原型(prototype),并将成为 Scala 2.12 的默认后端。

无论如何,期待已久的提议好处都来自使用 invokedynamic字节码(及其关联的 MethodHandle 结构)。它们包括:

  • reducing code size and execution time for closures
  • improving specialization of generic datatypes
  • potentially faster structural types

  • (剧透:使用 MethodHandles 在实验后端实现闭包目前比目前优化的闭包创建慢!)

    关于scala - Scala 为 JVM 1.7 生成字节码的优势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14285894/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com