我的应用程序(非常)经常调用Groovy 开关。 VisualVM 抽样显示我在 ScriptBytecodeAdapter.isCase()中花费了大约20%的应用时间。
由于所有情况都是字符串,因此标准Java 7 string switch将支持我的使用,这应该更有效。
是否可以让Groovy回退到标准的Java交换机?
说明:
我可以使用 AST s(它自己由SEMANTIC_ANALYSIS中的AST生成的开关)。
其他实施选项可能是使用如果 s / 其他而代替(我通常有<20个案例)或地图 of Closures
答案 0 :(得分:1)
在构建节点后,在AST中应用Groovy CompileStatic转换,应该使生成的代码静态编译。确保在代码中以编程方式执行此操作,而不是将注释添加到转换类中。
在大多数情况下,普通的旧Java版本的代码构造将比添加的Groovy语法更高效;但是,在某些情况下,访问底层Java构造可能很困难。
这至少应该更进一步。