Groovy в стиле Java так же быстр, как Java? - PullRequest
13 голосов
/ 05 сентября 2011

Если я правильно понимаю, Groovy динамически типизируется, но так как это почти расширенный набор Java, информация о статических типах может быть предоставлена ​​по желанию.Это может быть полезно, если вы пишете что-то, где только несколько частей критичны для производительности, избегая при этом трений в использовании нескольких языков.Тип аннотации могут быть предоставлены только для критических частей производительности.

Какое снижение производительности при использовании Groovy вместо Java в функциях / классах, где используется Java-подобное подмножество и предоставляются аннотации статического типа?

Ответы [ 2 ]

12 голосов
/ 05 сентября 2011

Объявление типов в groovy магическим образом не ускоряет процесс. Это все еще отличный код и должен пройти через MOP на случай, если что-то динамически изменилось. Вы не получаете статическое связывание только потому, что указали информацию о типе.

Для чувствительных к производительности вещей, для которых просто не хватает быстрого кода, вам нужно написать настоящий код Java.

Этот вопрос очень похож на предыдущий , где я дал ответ копаясь в сгенерированном байт-коде, показывающем, как ввод чего-либо не ускоряет процесс.

8 голосов
/ 06 сентября 2011

Вы также можете использовать Groovy ++. Перетащите groovypp.jar в путь к классам и аннотируйте пакет, класс или метод с помощью @Typed. Аннотированный код игнорирует MOP, поэтому он практически такой же быстрый, как и код Java.

И даже если вы не объявляете тип, код @Typed будет выводить тип по возможности во время компиляции.

...