Я прочитал "Что нового в Groovy 2.0" и немного смущен тем, когда использовать @CompileStatic. В статье упоминается, что аннотация @CompileStatic
была добавлена для разработчиков, которые не смогли воспользоваться динамической частью вызова Java7.
Таким образом, разработчики, стремящиеся к повышению производительности, не увидят больших изменений в Groovy 2.0, если они не смогут работать на JDK 7. К счастью, команда разработчиков Groovy подумала, что эти разработчики могут получить интересное повышение производительности, помимо других преимуществ, разрешив проверку типов. код, который компилируется статически.
Мой вопрос: если я использую JDK 7 и следую инструкциям по добавлению флага --indy
, нужно ли мне добавлять @CompileStatic
, чтобы увидеть некоторое увеличение производительности? Этот блог предполагает, что да, но Я не уверен, что он правильно скомпилировал, учитывая, что он сделал это в Eclipse.
Обновление: вот статистика при выполнении различных перестановок кода Фибоначчи.
> groovy --indy FibBoth.groovy
..........Fib (non-static indy): 1994.465
..........Fib (static indy): 529.197
> groovy FibBoth.groovy
..........Fib (non-static): 1212.788
..........Fib (static): 525.671
Примечание. Теперь этот вопрос кажется немного запутанным, когда я понимаю, что функции независимы. Поскольку в основе вопроса лежит путаница из заметок, которая заставила меня думать, что эти две функции связаны, я думаю, что имеет смысл не менять формулировку вопроса и разрешить принятый ответ, объясняющий различия.