我已閱讀了"What's new in Groovy 2.0",我對使用@CompileStatic時有點困惑。該文章提到@CompileStatic
註釋是針對無法利用Java7的調用動態部分的開發人員添加的。我是否應該使用Groovy的@CompileStatic(如果我也使用Java 7)
所以開發商在尋找性能的改善不會看到太大的變化在Groovy 2.0,如果他們不能在JDK 7上運行幸運的是,Groovy開發團隊認爲這些開發人員可以得到有趣的性能提升,除其他外通過允許靜態編譯類型檢查的代碼來獲得優勢。
我的問題是,如果我使用JDK 7,我按照說明添加--indy
標誌,我需要添加@CompileStatic
看到一些性能提升? This blog暗示我會,但我不確定他是否正確編譯,因爲他在Eclipse中完成了它。
更新:以下是運行Fibonacci代碼不同排列時的統計信息。
> 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
注意:這個問題似乎有點混淆,因爲我明白這些功能是獨立的。由於這個問題的基礎是圍繞着使我認爲兩個特徵是相關的筆記的混淆,所以我認爲不改變問題措辭並允許接受的解釋差異的答案是有意義的。
很好的答案。我從發佈的措辭中遺漏的部分是它們是獨立的功能。所以,即使使用Java 7和-indy,CompileStatic也可以提供一個性能提升(只要代碼實際上可以由編譯器進行類型檢查)。我們用indy和CompileStatic與斐波那契做了不同排列的快速測試,結果如下: – Scott