spring得到实例和new一个实例,哪个快?

spring配置的bean是默认单例,那么在程序中,得到一个实例一定比创建一个实例的速度快,也更加省资源。今天实际测试的时候发现,new 一个对象比spring得到一个对象快多了。后面自己又加了个单例测试,来对比一下,看实测结果:

public static void main(String[] args) {
        ReceiveProcess receiveProcess;
        ApplicationContext appCt = new ClassPathXmlApplicationContext("classpath:applicationContext.xml"); 
        long begin = System.currentTimeMillis();
        int num = 10000000;
        for (int i = 0; i < num; i++) {
            receiveProcess =  (ReceiveProcess) appCt.getBean("textReceive");
        }
        System.out.println("spring得到实例总时间:" + (System.currentTimeMillis() - begin));
        long begin2 = System.currentTimeMillis();
        ReceiveProcess  re = null;
        for (int j = 0; j < num; j++) {
            re = new TextReceiveProcess();
        }
        System.out.println("创建实例得到的总时间:"+ (System.currentTimeMillis() - begin2));
        
        ReceiveProcess reInstance = null;;
        long begin3 = System.currentTimeMillis();
        for (int d = 0; d < num; d++) {
            reInstance = TextReceiveProcess.getInstance();
        }
        System.out.println("单例情况下得到总时间:"+(System.currentTimeMillis() - begin3));
    }

得到的结果:

spring得到实例总时间:5257
创建实例得到的总时间:48
单例情况下得到总时间:16

 

偶尔会出现这种结果,这个结果我就有点不是很理解了,有时候创建的对象和单例得到的实例时间差不多,这是为什么了?

spring得到实例总时间:5258
创建实例得到的总时间:32
单例情况下得到总时间:31

 

总结一下,不知道有没有跟我一样理解的朋友。以为spring配置的bean比new一个更加省时省力,实际上测试的结果确不是这样子的。我们用spring实际是用spring管理资源,知道一些特性后,直接拿来用。当遇到性能要求时,或许这块的功能反而起到了反作用,今天我所遇到的就是这样的事。

posted @ 2014-03-18 15:13  wxwall  阅读(2816)  评论(23编辑  收藏  举报