Groovy做爲一種動態語言,性能和JAVA比確定是差很多,根據網友的測試,因爲測試環境,場景和編譯參數的不一樣,大概有差2到7倍的差距java
那麼一樣的Groovy,在不一樣的JDK版本下,會有着怎樣的差別呢?好奇試了一下bash
測試代碼寫得很是簡單,以下,爲了測試一些動態語言中經常使用的特性,特別用上了閉包和動態特性,這樣纔有意義麼閉包
class GroovyWithJdk{ static void run(){ 1000.times { "fib"(20) } //爲了動態特性 } static def fib(n){ if(n<2) return 1 def c = {x,y->fib(x)+fib(y)} //純粹就是爲了測試閉包 c(n-1,n-2) } } println System.getProperty("java.version") long start = System.currentTimeMillis() GroovyWithJdk.run() println "用時:${System.currentTimeMillis()-start}毫秒"
結果,讓人很欣慰呀,果真越新的的JDK性能越好(固然,也是由於新JDK增長了對於動態語言的支持),很合我這樣追新族的心意。性能
下面是結果:測試
/* 1.6.0_45 用時:6652毫秒 1.7.0_79 用時:5590毫秒 1.8.0_20 用時:4435毫秒 32位JDK的結果,由於我是64位機和系統,運行32位JDK時要模擬成32位的,因此效率差得有點大 1.8.0_51 用時:12858毫秒 */
能夠看到,JDK8相比JDK6,有着差很少30%的提高blog
至於如何快速測試?因爲GroovyConsole原本就是一個啓動腳本,它是依靠JAVA_HOME來指定使用哪一個JDK版本的,因此只要在調用前先指定一下JAVA_HOME就能夠了。能夠三個實例一塊兒運行get
set JAVA_HOME=D:\JDK7