吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

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

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

[复制链接]
三木猿 发表于 2020-9-11 15:06
实践出真知,先分享我现在知道的提高代码质量的方法。
1.ArrayList和HashMap,初始化时定义长度,效率提升的不是一点半点,经过反复测试后发现,arrayList定义长度,能够显著提高,但是HashMap提高的就不是特别显著了,且当数据量达到1000万时,ArrayList还能显著提高,HashMap定义长度的反而慢了,并且慢了很多,具体原因未知。
[Java] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
//这种做法会导致内存中有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, 2025-4-20 19:04

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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