使用 GBench 來測試 Groovy 2.0 的效能

類別: IT
 剛剛釋出沒多久,該版本包含很多新特性,諸如靜態編譯的特性對效能改進非常明顯。

我使用 Groovy 有很多年了,一直耿耿於懷的是 Groovy 缺少 JVM 中的靜態編譯。因此 Groovy 程式碼在效能上完全無法跟純 Java 程式碼相比。這也是限制 Groovy 在很多對效能要求較高實際專案中的應用。

所以當 Groovy 2.0 釋出,我就注意到了新的靜態程式碼編譯的新特性,然後我決定對這個特性進行效能上的測試,剛好我前幾天發現了一個很棒的 Groovy 效能測試工具 GBench,可很方便的編寫效能測試。

這裡是使用 GBench 對動態和靜態 Groovy 程式碼進行效能比較的程式碼:
@Grab('com.googlecode.gbench:gbench:0.3.0-groovy-2.0')
import gbench.BenchmarkBuilder
import groovy.transform.CompileStatic
  
int fib(int n) {
    if (n < 2) return n
    return fib(n - 1) + fib(n - 2) 
}
  
@CompileStatic
int fib2(int n) {
    if (n < 2) return n
    return fib2(n - 1) + fib2(n - 2) 
}
  
new BenchmarkBuilder().run {
    int n = 20 
    "Normal Version" { fib n }
    "@CompileStatic Version" { fib2 n }
}.prettyPrint() 


你可以使用 Groovy Console 來執行上面程式碼,結果如下:

從上圖執行結果我們可以看到靜態程式碼版本的 fibonacci 函式執行速度是動態程式碼版本的 3 倍。

使用 GBench 來測試 Groovy 2.0 的效能原文請看這裡