Groovy я пока что знаю плохо, поэтому, на самом деле, у меня два вопроса:
1. Хотел бы услышать об опыте использования Groovy как части Вашего Java приложения. Возможно это только доменные объекты, или бизнес логика, возможно — и то и другое. В частности интересует, можно ли использовать Groovy для всего проекта или только для тех частей, которые не могут сильно повлиять на производительность?
2. На первый вопрос меня натолкнул следующий тест: я реализовал простейший рекурсивный алгоритм вычисления чисел Фибоначчи на Java и на Groovy и замерил время его работы.
Код:
class Groovy {
def fibonacci(n) {
if (n < 2) return n
return fibonacci(n - 1) + fibonacci(n - 2)
}
}
public class Java {
public int fibonacci(int n) {
if (n < 2) return n;
return fibonacci(n - 1) + fibonacci(n - 2);
}
}
Я ожидал примерно одинакового времени выполнения, но на практике получил следующее:
для n = 40<br/>
<br/>
Java: 0.481 сек.<br/>
Groovy: 6.992 сек.<br/>
Чем объясняется такой отрыв?