1

Groovy--indy在 2012 年的 2.0 版中添加了该选项。当时它不是默认设置,因为invoke dynamic需要 Java 7,而且当时很多人使用 Java 6。

现在即使是即将推出的 Groovy 3.0 仍然需要该--indy选项才能强制它使用invoke dynamic. 尽管 Groovy 3.0 需要 Java 8 或更高版本,但还是会这样。

仍然具有默认的非 indy 编译和默认的运行时库是非 indy 是否有任何技术优势?我会认为现在甚至不需要非独立选项。

4

1 回答 1

1

默认情况下,在--indyGroovy 3.0 的路线图上(目前处于 alpha 阶段)。团队希望获得有关新解析器的反馈,因此在发布 alpha 版本之前没有等到所有功能都可用。

Groovy 3.0 编译器可能会为一两个版本保留某种非 indy 选项,以帮助希望重新编译旧库并生成类似字节码的人。

目前,在生成非 indy 字节码时,有一些原始处理优化正在发挥作用。非常早期的基准测试(现在在相当旧的 JVM 上)显示了一些性能下降,因为 indy 字节码没有那些相同的优化。3.0 的路线图还包括重新审视这些特定情况下的性能,以便在仍然需要时考虑可能的优化。

一个或两个版本是否需要一些非 indy jars 的确切细节取决于其他一些并行更改,以删除一些 indy 情况并不真正需要但所有现有库都需要的遗留类,这些类是用 Groovy 编写的跑步。最终确定后,将在文档和发行说明中对此进行详细说明。

[1] 中有更多细节。

[1] http://groovy.markmail.org/thread/yxeflplf5sr2wfqp

于 2018-05-14T16:09:56.013 回答