Должен ли я использовать Groovy @CompileStatic, если я также использую Java 7
Я прочитал«Что нового в 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
Примечание: этот вопрос кажется немного запутанным, так как я понимаю, что функции независимы. Поскольку в основе вопроса лежит путаница в примечаниях, которые заставили меня думать, что эти две особенности были связаны, я думаю, что имеет смысл не менять формулировку вопроса и не принимать принятый ответ, объясняющий различия.