前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >构造函数和使用一个个 setter 的效率哪个好??

构造函数和使用一个个 setter 的效率哪个好??

作者头像
好好学java
发布2019-06-25 17:42:59
1K0
发布2019-06-25 17:42:59
举报
文章被收录于专栏:好好学java的技术栈
代码语言:javascript
复制
作者:李学凯 
原文:https://blog.csdn.net/qq_27093465/article/details/92763548 

在对 Java 代码进行优化的时候,想方设法的要提高整体的效率,使用 JProfiler 看代码的时间占比,然后,看看哪些部分是可以优化的,减少运行时间的。下面有这么几个方向。

1,能使用构造函数一步到位的,就尽量使用构造函数,而不是使用一个个 setter 函数

2,能使用数组的,就使用数组。替代 list,数组是真的快。

3,for 循环的时候,使用 for i 循环针对lsit接口的集合,不使用 for each 循环。for i 循环的时候,把 length 的值提到 for 循环之外。

4,有些变量能提出来的,取一次,多次使用。不要频繁的 get 。即使是一个简单的 int 值。

5,要是能使用内部类的话,可以使用内部类,这样可以省去 getter,setter 方法的使用。

6,json 的序列化和反序列化,不要说理论上是 fastjson 快,就使用 fastjson ,因为针对数据结构的简单复杂程度,来选择使用什么去序列化和反序列化,要实际测试之后,再说话。不能直接照搬理论,因为有时候 Gson 真的很快。

下面对这个构造和set的效率对比

然后,使用的代码如下:

代码语言:javascript
复制

    import com.google.common.collect.Lists;
    import com.lxk.model.Car;
    import com.lxk.model.Dog;

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

    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));
        }
    }

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-06-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 好好学java 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档