私が正しく理解していれば、Groovyは動的に型付けされますが、ほとんどJavaのスーパーセットであるため、静的型情報がオプションで提供される場合があります。これは、複数の言語を使用する際の摩擦を避けながら、パフォーマンスが重要な部分が少ないものを作成する場合に役立ちます。タイプ注釈は、パフォーマンスが重要な部分にのみ提供できます。
Javaのようなサブセットが使用され、静的型アノテーションが提供される関数/クラスでJavaの代わりにGroovyを使用すると、パフォーマンスが低下しますか?
私が正しく理解していれば、Groovyは動的に型付けされますが、ほとんどJavaのスーパーセットであるため、静的型情報がオプションで提供される場合があります。これは、複数の言語を使用する際の摩擦を避けながら、パフォーマンスが重要な部分が少ないものを作成する場合に役立ちます。タイプ注釈は、パフォーマンスが重要な部分にのみ提供できます。
Javaのようなサブセットが使用され、静的型アノテーションが提供される関数/クラスでJavaの代わりにGroovyを使用すると、パフォーマンスが低下しますか?
groovyで型を宣言しても、魔法のように速度が上がるわけではありません。それはまだグルーヴィーなコードであり、何かが動的に変更された場合に備えてMOPを通過する必要があります。タイプ情報を指定したからといって、静的リンクを取得することはありません。
グルーヴィーなコードでは十分に高速ではないパフォーマンスに敏感なものについては、実際のJavaコードを作成する必要があります。
この質問は、生成されたバイトコードを掘り下げて答えを出した前の質問と非常によく似ており、何かを入力しても速度が上がらないことを示しています。
Groovy++を使用することもできます。groovypp.jarをクラスパスにドロップし、パッケージ、クラス、またはメソッドに@Typedアノテーションを付けます。注釈付きコードはMOPをバイパスするため、実質的にJavaコードと同じくらい高速です。
また、型を宣言しなくても、@ Typedコードは、コンパイル時に可能であれば型を推測します。