Java 8 自动装箱拆箱效率影响测试

Java 8 自动装箱效率影响测试测试完毕之后的结论:  1. 自动装箱对于少量的, 简单的运算造成的效率影响不大  2. 自动装箱对于单纯的赋值操作影响不大测试代码如下.public void test(){ /** * 首先什么时候会自动拆箱: Long -> long * 什么时候会自动装箱: long -> Long * max_value = 214...
摘要由CSDN通过智能技术生成

Java 8 自动装箱拆箱效率影响测试


测试完毕之后的结论:
  1. 装箱发生 2 32 − 1 2^{32-1} 2321 次的时候影响时间大概为10秒
  2. 拆箱发生 2 32 − 1 2^{32-1} 2321 次的时候影响时间为10~20秒
因为 System.gc() 并不会立即执行垃圾回收所以不确定具体对效率的影响.

拆箱/装箱 影响效率的主要原因是会产生很多的小对象, 影响垃圾回收.
拆箱: 在栈上创建一个基本类型的数据.
装箱: 需要在堆上创建一个新的对象.

如果想要尽量避免自动装箱/拆箱 对效率有影响就需要在设置数据类型的时候认真思考下.

测试代码如下.

public void autoBoxingTest() {
   
        /**
         *
         * assignment : assignNormal: 2147483646 begin: 1550286447879 middle: 1550286450002 normal: 2123
         * assignment : assignBoxing: 2147483646 middle: 1550286450002 end: 1550286461670 boxing: 11668
         *
         */
        long assignNormal = 0L;
        Long assignBoxing = 0L;
        long begin = System.currentTimeMillis();

        for (long i = 0L; i < Integer.MAX_VALUE; i++) {
   
            assignNormal = i;
        }

        long middle = System.currentTimeMillis();
        for (long i = 0L; i < Integer.MAX_VALUE; i++) {
   
            // 装箱 long -> Long
            assignBoxing = i;
        }

        long end = System.currentTimeMillis();

        System.out.println("assignment : assignNormal: " + assignNormal + " begin: " + begin + " middle: " + middle + " normal: " + (middle - begin));
        System.out.println("assignment : assignBoxing: " + assignBoxing +
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值