//使用groovy的语法去编写
long time = System.currentTimeMillis()
10000.times {
int i = 0;
1000.times{ val->
i += val
}
}
println "${System.currentTimeMillis() - time} ms"
//使用Java的语法去编写
time = System.currentTimeMillis();
int i = 0;
for(int x= 1;x<10000;x++) {
for(int y=1;y<1000;y++) {
i=i+y;
}
}
System.out.println(i + " " + (System.currentTimeMillis() - time) +" ms");
执行结果分别是:
700032704 14531 ms
700032704 15875 ms
而第二部分代码写在Java类中的执行结果是:
700032704 16 ms
能基本说明两个问题,一,在Groovy中使用Java的语法,不会带来性能上的提升;二,Groovy在运行性能上和Java还是有较大差距的。
同样的逻辑,使用Ruby1.9,执行时间为3578.0 ms。
这样的结果我不甘心,于是,我在Groovy中调用了Java的代码:
time = System.currentTimeMillis()
JavaTest.main(null);
println "${System.currentTimeMillis() - time} ms"
执行结果还是700032704 16 ms。呵呵,看来如果需要进行大数据量的运算,还是先写到Java中吧,好在Groovy可以直接调用Java的代码。
long time = System.currentTimeMillis()
10000.times {
int i = 0;
1000.times{ val->
i += val
}
}
println "${System.currentTimeMillis() - time} ms"
//使用Java的语法去编写
time = System.currentTimeMillis();
int i = 0;
for(int x= 1;x<10000;x++) {
for(int y=1;y<1000;y++) {
i=i+y;
}
}
System.out.println(i + " " + (System.currentTimeMillis() - time) +" ms");
执行结果分别是:
700032704 14531 ms
700032704 15875 ms
而第二部分代码写在Java类中的执行结果是:
700032704 16 ms
能基本说明两个问题,一,在Groovy中使用Java的语法,不会带来性能上的提升;二,Groovy在运行性能上和Java还是有较大差距的。
同样的逻辑,使用Ruby1.9,执行时间为3578.0 ms。
这样的结果我不甘心,于是,我在Groovy中调用了Java的代码:
time = System.currentTimeMillis()
JavaTest.main(null);
println "${System.currentTimeMillis() - time} ms"
执行结果还是700032704 16 ms。呵呵,看来如果需要进行大数据量的运算,还是先写到Java中吧,好在Groovy可以直接调用Java的代码。