Является ли стиль Java Groovy столь же быстрым, как Java?
Если я правильно понимаю, Groovy является динамически типизированным, но поскольку он представляет собой почти надмножество Java, информация о статическом типе может быть необязательно предоставлена. Это может быть полезно, если вы пишете что-то, где только несколько частей являются критическими по производительности, избегая трений при использовании нескольких языков. Аннотации типов могут предоставляться только для критически важных частей.
Какова эффективность при использовании Groovy вместо Java в функциях/классах, где используется подмножество Java, и предоставляются аннотации статического типа?
Ответы
Ответ 1
Объявление типов в groovy не волшебным образом ускоряет процесс. Он все еще groovy код и должен пройти через MOP, если что-то получило динамическое изменение. Вы не получаете статической привязки только потому, что указали информацию о типе.
Для чувствительных к производительности вещей, для которых код groovy просто недостаточно быстрый, вам нужно написать реальный Java-код.
Этот вопрос очень похож на предыдущий, где я дал ответ, копая в сгенерированный байт код, показывающий, как печатать что-то не ускоряет работу.
Ответ 2
Вы также можете использовать Groovy ++. Поместите groovypp.jar в путь к классам и аннотируйте пакет, класс или метод с помощью @Typed. Аннотированный код обходит MOP, поэтому он практически так же быстро, как Java-код.
И даже если вы не объявляете тип, код @Typed будет выводить тип, если это возможно во время компиляции.