Groovy コードのパフォーマンスの最適化に取り組んでいます。jvisualvm を使用して実行中のアプリケーションに接続し、CPU サンプルを収集しました。サンプルによると、org.codehaus.groovy.reflection.CachedMethod.inkoveが最も CPU 時間を消費します。サンプルに他の適用方法はありません。
CachedMethod.invokeを掘り下げて、どのコード行が実際にパフォーマンスのペナルティを与えるかを理解する正しい方法は何ですか?
ありがとう。
UPD : 私はIndyを使用していますが、役に立ちませんでした。
groovy を Java に書き換える前にボトルネックを見つけたいので、@CompileStaticを導入しようとしませんでした。
このスレッドに少し似た私の問題: Call site caching than invokedynamic?
Groovy スクリプトを動的に構成するコードがあります。スクリプト テンプレートは次のようになります。
def evaluateExpression(Map context){
def user = context.user
%s
}
%sが置き換えられた場所
user.attr1 == '1' || user.attr2 == '2' || user.attr3 = '3'
データベースから取得した置換のセット (合計 20) があります。コードは DB から置換を取得し、GroovyScript を作成して評価します。ボトルネックはスクリプトの実行にあると思います。それを修正する正しい方法は何ですか?