Я вижу, что недавняя версия Groovy 2.0 включает в себя необязательную статическую компиляцию наряду с несколькими другими добавленными преимуществами, такими как необязательная проверка статического типа. После небольшого поиска я не смог найти каких-либо обширных тестов, сравнивающих производительность Groovy (со статической компиляцией) с Java и, возможно, Scala. Кто-нибудь знает о таких сравнениях производительности? Можем ли мы предположить, что это то же самое, что Groovy ++ было до его смерти? Если производительность сопоставима, будет ли Groovy жизнеспособной альтернативой для большого критически важного приложения?
Какова производительность Groovy 2.0 со статической компиляцией
Ответ 1
Здесь есть несколько тестов (хотя трудно понять, что происходит)
Однако, взяв исходный код Groovy 1.8.2 Fib
в нижней части страницы и запустив его в Groovy 2.0, вы получите:
Groovy(static ternary): 1623ms
Groovy(static if): 1583ms
Groovy(instance ternary): 1744ms
Groovy(instance if): 1694ms
Ввод @groovy.transform.CompileStatic
в начало script дает вам:
Groovy(static ternary): 819ms
Groovy(static if): 799ms
Groovy(instance ternary): 816ms
Groovy(instance if): 811ms
Очевидно, что это не полный тест (он тестирует только одно), он не включает разминку или что-то еще, а Groovy 2.0 вышел только неделю, однако он намекает на хорошее улучшение скорости в эта ситуация...
Ответ 2
Я считаю, что java запускает те тесты около 550 мс
Я сравнивал производительность с Java. Для "статических тернарных" и "статических, если" производительность Groovy с @CompileStatic несколько отличается от производительности Java. Для "instance trernary" и "instance if" это почти коэффициент 2. См. Мой пост в блоге.