我已经阅读了“Groovy 2.0 中的新增功能”,但对于何时使用 @CompileStatic 感到有些困惑。文章提到,@CompileStatic
注释是为无法利用 Java7 的调用动态部分的开发人员添加的。
因此,如果无法在 JDK 7 上运行,寻求性能改进的开发人员不会在 Groovy 2.0 中看到太多变化。幸运的是,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
注意:这个问题现在似乎有点令人困惑,因为我知道这些功能是独立的。由于问题的基础是围绕使我认为这两个功能相关的注释中的混淆,我认为不更改问题措辞并允许解释差异的公认答案是有意义的。