13

如果我理解正确,Groovy 是动态类型的,但由于它几乎是 Java 的超集,因此可以选择提供静态类型信息。如果编写的东西只有少数部分对性能至关重要,同时避免使用多种语言的摩擦,这可能很有用。只能为性能关键部分提供类型注释。

在使用类似 Java 的子集并提供静态类型注释的函数/类中使用 Groovy 而不是 Java 的性能损失是什么?

4

2 回答 2

12

在 groovy 中声明类型并不会神奇地加快速度。它仍然是 groovy 代码,需要通过 MOP 以防发生动态变化。仅仅因为您提供了类型信息,您不会获得静态链接。

对于 groovy 代码不够快的性能敏感问题,您需要编写真正的 java 代码。

这个问题与上一个问题非常相似,我在其中给出了一个深入研究生成的字节码的答案,该问题显示输入内容如何无法加快速度。

于 2011-09-05T01:01:22.403 回答
8

您还可以使用 Groovy++。将 groovypp.jar 放到类路径中,并使用 @Typed 注释包、类或方法。注释代码绕过 MOP,因此几乎与 Java 代码一样快。

即使您没有声明类型,@Typed 代码也会在编译时尽可能推断类型。

于 2011-09-06T12:50:34.170 回答