私は、多くの並列実行(スレッドプール、Java 8ストリームなど)を使用する大きなJavaフレームワークを持っています。純粋なJavaでそれを使用しているときにフィンが機能し、多量の計算作業で最大8つのコアがすべてロードされます。groovyからjavaを呼び出す際の並列性の問題
私はJavaクラスのために薄いGroovyラッパーを作って構成を簡素化しました。私が期待しているのは、Groovy呼び出しでわずかなパフォーマンスオーバーヘッドが発生することですが、コンパイルされたJavaクラスはまったく同じように動作するはずです。実際には、パフォーマンスが大幅に低下しており、プログラムでは1〜2つのコアを40〜50%しか使用していないことがわかります。 GroovyコードをGroovyShell
にラップしてJavaメインクラスから呼び出すと、すべて正常に動作し、100%パフォーマンスが戻ってきます。
何が問題ですか? Groovyランチャーは、デフォルトのスレッドプーリング設定をオーバーライドしますか?
私はJava 8、Groovy 2.4.7を使用していて、IdeaのGroovyスクリプトを呼び出しています。