Подтвердить что ты не робот

Является ли стиль Java Groovy столь же быстрым, как Java?

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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