【发布时间】:2013-01-23 14:24:47
【问题描述】:
我已经阅读了"What's new in Groovy 2.0",但对于何时使用@CompileStatic 感到有些困惑。文章提到,@CompileStatic 注释是为无法利用 Java7 的调用动态部分的开发人员添加的。
因此,如果无法在 JDK 7 上运行,寻求性能改进的开发人员不会在 Groovy 2.0 中看到太多变化。幸运的是,Groovy 开发团队认为这些开发人员可以通过以下方式获得有趣的性能提升以及其他优势允许静态编译类型检查代码。
我的问题是,如果我使用 JDK 7 并按照说明添加 --indy 标志,我是否需要添加 @CompileStatic 才能看到一些性能提升? This blog 建议我这样做,但我不确定他是否正确编译,因为他是在 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
注意:这个问题现在似乎有点令人困惑,因为我知道这些功能是独立的。由于问题的基础是围绕使我认为这两个功能相关的注释中的混淆,我认为不更改问题措辞并允许解释差异的公认答案是有意义的。
【问题讨论】:
标签: groovy java-7 invokedynamic groovy-2 compile-static