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

本文通过实验对比了Spring框架中Bean的实例化速度与直接new对象及使用单例模式的性能差异,揭示了在不同场景下各种实例化方式的实际表现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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管理资源,知道一些特性后,直接拿来用。当遇到性能要求时,或许这块的功能反而起到了反作用,今天我所遇到的就是这样的事。

转载于:https://www.cnblogs.com/wxwall/p/3607815.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值