吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 957|回复: 6
收起左侧

[讨论] 一起讨论如何提高代码质量

[复制链接]
三木猿 发表于 2020-9-11 15:06
实践出真知,先分享我现在知道的提高代码质量的方法。
1.ArrayList和HashMap,初始化时定义长度,效率提升的不是一点半点,经过反复测试后发现,arrayList定义长度,能够显著提高,但是HashMap提高的就不是特别显著了,且当数据量达到1000万时,ArrayList还能显著提高,HashMap定义长度的反而慢了,并且慢了很多,具体原因未知。
[Java] 纯文本查看 复制代码
public class test {

    public static void main(String[] args) throws Exception {
        int count=10000*100;
        long start= System.currentTimeMillis();
        List<Integer> list=new ArrayList<>();
        for (int i = 0; i < count; i++) {
            list.add(i);
        }
        long end=System.currentTimeMillis();
        System.out.println("ArrayList无初始长度"+(end-start));
        List<Integer> list1=new ArrayList<>(count);
        for (int i = 0; i < count; i++) {
            list1.add(i);
        }
        start=System.currentTimeMillis();
        System.out.println("ArrayList有初始长度"+(start-end));
        Map<Integer,Integer> map=new HashMap<>();
        for (int i = 0; i < count; i++) {
            map.put(i,i);
        }
        end=System.currentTimeMillis();
        System.out.println("HashMap无初始长度"+(end-start));
        Map<Integer,Integer> map1=new HashMap<>(count);
        for (int i = 0; i < count; i++) {
            map1.put(i,i);
        }
        start=System.currentTimeMillis();
        System.out.println("HashMap有初始长度"+(start-end));

    }
}

image.png
2.在项目中尽量用线程池,避免直接new Thread,要知道线程不是越多越好,是要根据cpu的核数来决定线程数量的,
单核cpu启1000个线程是多余的,且严重拖慢反应速度,用线程池可以有效的利用资源。
3.循环尽量不要不断创建对象引用
[Java] 纯文本查看 复制代码
//这种做法会导致内存中有count份Object对象引用存在,count很大的话,就耗费内存了
//replace
for (int i = 1; i <= count; i++){
    Object obj = new Object();    
}
//with...
Object obj =null;
for (int i = 1; i <= count; i++){
     obj = new Object();    
}

行吧,先发这点,之后想到了再添加,该你们了,分享下优化代码的方法吧(我就是想白嫖)

免费评分

参与人数 2吾爱币 +3 热心值 +1 收起 理由
薛之谦的盲肠 + 2 + 1 代码质量和头发的稀疏程度成正比·
小白大侠 + 1 老哥,等我学完来也提上几点,现在还不好

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

BeautifulBoy 发表于 2020-9-11 15:35
高内聚低耦合
shanqw 发表于 2020-9-11 15:36
深巷丶 发表于 2020-9-11 16:04
arrayList定义长度似乎不能add和clear了,dart里面是这样,java记不太清了
爱情海玩偶 发表于 2020-9-11 16:06
我也想白嫖,我还没形成代码规范。刚好学习学习
 楼主| 三木猿 发表于 2020-9-11 16:14
深巷丶 发表于 2020-9-11 16:04
arrayList定义长度似乎不能add和clear了,dart里面是这样,java记不太清了

arrayList会自动扩容的,如果不设定初始长度,就会不断扩容,效率自然低了,设定长度后,只有满了后才会继续扩容
深巷丶 发表于 2020-9-11 16:26
三木猿 发表于 2020-9-11 16:14
arrayList会自动扩容的,如果不设定初始长度,就会不断扩容,效率自然低了,设定长度后,只有满了后才会 ...

好的,谢谢,好久没用了记不清了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止回复与主题无关非技术内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-17 00:14

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表