构造函数和使用一个个 setter 的效率简单对比



   /**
     * 测试谁快 直接构造或者一个个set,他们的效率差多少
     *
     * @author xyd on 2019/6/23
     */

    public class FastIsConstructOrSet {
        public static void main(String[] args) {
            testFast();
        }    

        /**
         * 使用JProfiler看时间占比
         */
        private static void testFast() {
            while (true) {
                //27.4%
                set();
                //72.6%
                construct();
            }
        }   

        /**
         * 构造函数来给属性赋值
         */
        private static void construct() {
            Car car = new Car("oooo", 100, Lists.newArrayList(new Dog("aaa", true, true)));
        }

        /**
         * set来给属性赋值
         */
        private static void set() {
            Car car = new Car();
            car.setSign("oooo");
            car.setPrice(100);
            Dog dog = new Dog();
            dog.setName("aaa");
            dog.setAlive(true);
            dog.setLoyal(true);
            car.setMyDog(Lists.newArrayList(dog));
        }
    }

可以发现,构造就是比一个个设置要快不少,所以,在能一步到位给属性设置值的时候,考虑到效率问题,就要这么干

一个个设置调用太多次函数了,太多的压参pop的处理。就跟for循环,计数器是数组的长度时,要在for循环入口定义一个len=a.size(),而不要放到for括号的中间部分一次次循环中去重新获取len,那会导致太多的函数调用,影响性能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值