强制Groovy使用标准的java开关?

时间:2016-05-24 11:17:04

标签: performance groovy

我的应用程序(非常)经常调用Groovy 开关 VisualVM 抽样显示我在 ScriptBytecodeAdapter.isCase()中花费了大约20%的应用时间。

由于所有情况都是字符串,因此标准Java 7 string switch将支持我的使用,这应该更有效。

是否可以让Groovy回退到标准的Java交换机?

说明:

  • 我可以使用 AST s(它自己由SEMANTIC_ANALYSIS中的AST生成的开关)。

  • 其他实施选项可能是使用如果 s / 其他而代替(我通常有<20个案例)或地图 of Closures

1 个答案:

答案 0 :(得分:1)

在构建节点后,在AST中应用Groovy CompileStatic转换,应该使生成的代码静态编译。确保在代码中以编程方式执行此操作,而不是将注释添加到转换类中。

在大多数情况下,普通的旧Java版本的代码构造将比添加的Groovy语法更高效;但是,在某些情况下,访问底层Java构造可能很困难。

这至少应该更进一步。