私はGroovy スイッチを私のアプリケーションで(非常に)頻繁に呼びます。 VisualVMのサンプリングは、私はScriptBytecodeAdapter.isCase()に自分のアプリケーションの時間の約20%を費やしていることを示しています。Groovyに標準のJavaスイッチを使用させますか?
すべての場合は文字列であるので、私の使用量は、より効率的であるべき標準的なJava 7 string switchによりサポートされるだろう。
は、標準のJavaスイッチにフォールバックするGroovyのを聞いて、それは可能ですか?
備考:
Iは(SEMANTIC_ANALYSISにおけるASTことによってそれ自身が生成されるスイッチ)AST Sを使用することができます。
やGroovyのCompileStatic変換での適用地図クロージャ
の
他の実装オプションを試して、違いがあるかどうかを確認しましたか?それらが助けにならない場合は、あなたのASTトランスフォーマにCompileStatic変換を適用してみてください(あなたのコードを前提としています)。それを超えて、Javaでそのクラスを書くことができるのでしょうか? – cjstehno
私はこれらの他の実装を試していません(私は、java 7スイッチがオプションではない場合のみ)。私はASTにCompileStaticアノテーションを追加しますが、実際に考慮されているかどうかは確認していません。 –
あなたは厳しい状況にあります。はい、標準のJavaに変換することでパフォーマンスを向上させることができますが、残念ながら、この言語が常に基盤となるJavaへの直接的なパスを与えるわけではありません。がんばろう。また、CompileStaticを生成されたコードにプログラムで適用し、アノテーションとしてトランスフォーマ自体に追加するのではなく、必ず適用してください。 ;-) – cjstehno