問題タブ [invokedynamic]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1002 参照

performance - Groovy パフォーマンスの最適化

Groovy コードのパフォーマンスの最適化に取り組んでいます。jvisualvm を使用して実行中のアプリケーションに接続し、CPU サンプルを収集しました。サンプルによると、org.codehaus.groovy.reflection.CachedMethod.inkoveが最も CPU 時間を消費します。サンプルに他の適用方法はありません。

CachedMethod.invokeを掘り下げて、どのコード行が実際にパフォーマンスのペナルティを与えるかを理解する正しい方法は何ですか?

ありがとう。

UPD : 私はIndyを使用していますが、役に立ちませんでした。

groovy を Java に書き換える前にボトルネックを見つけたいので、@CompileStaticを導入しようとしませんでした。

このスレッドに少し似た私の問題: Call site caching than invokedynamic?

Groovy スクリプトを動的に構成するコードがあります。スクリプト テンプレートは次のようになります。

%sが置き換えられた場所

データベースから取得した置換のセット (合計 20) があります。コードは DB から置換を取得し、GroovyScript を作成して評価します。ボトルネックはスクリプトの実行にあると思います。それを修正する正しい方法は何ですか?

0 投票する
1 に答える
178 参照

java - Java バイトコード、Java サプライヤー、および invokedynamic 引数

私はこのクラスを持っていて、それをコンパイルします。

次に、そのバイトコードを調べようとすると、次のpublic static void main関数の始まりが得られます。

ここで、invokedynamic 呼び出しを確認できます。正しく理解すれば、Supplier インターフェイスの匿名インスタンスを作成します。invokedynamic には 2 つの引数が渡され、そのうちの 1 つは #3 です。2 番目の引数は 0 です。最初の質問は、0 は何を表しているのでしょうか?

定数プールでは #3 は を表します#3 = InvokeDynamic #0:#27 // #0:get:()Ljava/util/function/Supplier;。定数プールに #27 への参照がありますが、#0 への参照はありません。2 番目の質問は、#0 は何を表しているのでしょうか?

0 投票する
2 に答える
156 参照

java - ASM は 'Type.INT_TYPE' を定数 Bootstrap メソッド引数として渡すことができません

invokedynamicASM を使用して命令を生成するための次のコードを考えてみましょう。

生成されたクラスをASMifierで逆コンパイルすると該当行が

ご覧のとおり、Type.INT_TYPEは という名前の参照型へのリテラル参照に変わりましたI。これが存在しないため、JVM は実行時にjava.lang.BootstrapMethodError: java.lang.NoClassDefFoundError: I.

私が代わりにやりたかったのは、 int.class(Classプリミティブ型のインスタンスint、またはInteger.TYPE定数の値)bootstrapの引数としてメソッドに渡すことでしたsomeClass。ただし、ASM はこれを適切に理解またはサポートしていないようです。

これは ASM のバグと見なすことができますか? また、回避策はありますか?

0 投票する
1 に答える
402 参照

scala - Java8 と Scala2.12 ラムダ キャッシュに違いがあるのはなぜですか?

Java コード

スカラ コード (バージョン 2.12.0)

結果