三木猿 发表于 2020-9-11 15:06

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

实践出真知,先分享我现在知道的提高代码质量的方法。
1.ArrayList和HashMap,初始化时定义长度,效率提升的不是一点半点,经过反复测试后发现,arrayList定义长度,能够显著提高,但是HashMap提高的就不是特别显著了,且当数据量达到1000万时,ArrayList还能显著提高,HashMap定义长度的反而慢了,并且慢了很多,具体原因未知。
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));

    }
}

2.在项目中尽量用线程池,避免直接new Thread,要知道线程不是越多越好,是要根据cpu的核数来决定线程数量的,
单核cpu启1000个线程是多余的,且严重拖慢反应速度,用线程池可以有效的利用资源。
3.循环尽量不要不断创建对象引用
//这种做法会导致内存中有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();   
}
行吧,先发这点,之后想到了再添加,该你们了,分享下优化代码的方法吧(我就是想白嫖){:301_1001:}

BeautifulBoy 发表于 2020-9-11 15:35

高内聚低耦合

shanqw 发表于 2020-9-11 15:36

规范规范~~~统一的编写规范说明{:1_892:}

深巷丶 发表于 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会自动扩容的,如果不设定初始长度,就会不断扩容,效率自然低了,设定长度后,只有满了后才会 ...

好的,谢谢,好久没用了记不清了
页: [1]
查看完整版本: 一起讨论如何提高代码质量