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管理資源,知道一些特性后,直接拿來用。當遇到性能要求時,或許這塊的功能反而起到了反作用,今天我所遇到的就是這樣的事。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM