invokedynamic - действительно сложная история, поскольку характеристики производительности все время меняются в JDK7. Во время портирования Groovy на indy я очень, очень близко подошел к Java, примерно в 1.5 раза. Но я должен использовать catchExceptionGuard, который снижает производительность до уровня 3-4. Нам все еще нужно исследовать способы избежать использования этой охраны. Возможно, нам придется сломать некоторый существующий код в Groovy 2.2 для этого. Во всяком случае, мне не нужна защита для отката invokeMethod, как упоминалось выше. Именно для GroovyRuntimeExceptions, возможно, содержащих другие исключения, я должен развернуть или сделать другие вещи. Таким образом, теоретически возможная производительность, по-видимому, находится между Java и половиной скорости Java для существующих методов. Выполнение вызовов invokeMethod - это совсем другая история.
Если вам нужно больше, используйте @CompileStatic в Groovy 2.0.