为什么32位和64位JDK的Groovy有这么大的区别

为什么32位和64位JDK的Groovy有这么大的区别,groovy,Groovy,我编写了一些代码来测试不同JDK的性能,下面是代码 class GroovyWithJdk{ static void run(){ 1000.times { "fib"(20) } //for dynamic } static def fib(n){ if(n<2) return 1 def c = {x,y->fib(x)+fib(y)} //test closure

我编写了一些代码来测试不同JDK的性能,下面是代码

class GroovyWithJdk{
    static void run(){
        1000.times { "fib"(20) } //for dynamic
    }

    static def fib(n){
        if(n<2)
            return 1

        def c = {x,y->fib(x)+fib(y)} //test closure
        c(n-1,n-2)
    }
}



println System.getProperty("java.version")

long start = System.currentTimeMillis()
GroovyWithJdk.run()
println "${System.currentTimeMillis()-start}ms"
GroovyWithJdk类{
静态无效运行(){
1000.5倍{“fib”(20)}//用于动态
}
静态def fib(n){
if(nfib(x)+fib(y)}//测试闭包
c(n-1,n-2)
}
}
println System.getProperty(“java.version”)
长启动=System.currentTimeMillis()
GroovyWithJdk.run()
println“${System.currentTimeMillis()-start}ms”

结果如下:

1.6.0_45 6652ms

1.7.0_79 5590ms

1.8.0_20 4435ms

32位JDK

1.8.0_51 12858ms


为什么32位JDK这么慢?

因为您使用的是64位体系结构,所以它必须执行大量字节级工作?