Java和Groovy性能测试

来源:互联网 发布:6s4g网络突然上不了网 编辑:程序博客网 时间:2024/05/29 21:33

    一直使用Java调用Groovy脚本完成一些随时可能调整修改的任务。今天测试了以下性能,还不错。测试代码如下:
Java代码:

public class TestC {
    static long fib(long n) {
        if (n < 2) return n;
        return fib(n - 1) + fib(n - 2);
    }
    
    public static void main(String[] args) throws CompilationFailedException,
            IOException, InstantiationException, IllegalAccessException {
        for (int p = 0; p < 10; p++) {
            long k = 0;
            long start = System.currentTimeMillis();

            for (long i = 0; i < 40; i++) {
                k = k + fib(i);
            }

            System.out.println(System.currentTimeMillis() - start);
            //System.out.println(k);
        }
        System.out.println("=======");
        long start = System.currentTimeMillis();
        GroovyClassLoader loader = new GroovyClassLoader(
                TestC.class.getClassLoader());
        Class groovyClass = loader.parseClass(new File("Test.groovy"));
        GroovyObject obj = (GroovyObject) groovyClass.newInstance();
        System.out.println("Compile and new time use "+(System.currentTimeMillis() - start));
        for (int p = 0; p < 10; p++) {
            obj.invokeMethod("main", new Object[] {});
        }
    }

}

Groovy脚本Test.groovy:

class Test {
    static long fib(long n) {
        if (n < 2) return n
        return fib(n - 1) + fib(n - 2)
    }
    
    static main(args) {    
        long k=0;
        long start = System.currentTimeMillis();    
        for(long i=0;i<40;i++){
            k = k+fib(i);
        };    
        println(System.currentTimeMillis()-start);
        //println k;
    }
}


运行结果:

928
913
921
929
931
927
914
927
921
923
=======
Compile and new time use 523
2657
2661
2653
2660
2660
2665
2654
2667
2668
2669

可以看到,编译脚本时花费了500多毫秒,执行时脚本的时长是Java代码的3倍左右。这性能已经相当可以了。而且通过上述代码可以看出,一定要先把脚本编译缓存起来,后面用的时候不用编译了,编译花费时间比较长的。

原创粉丝点击