实践出真知,先分享我现在知道的提高代码质量的方法。
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));
}
}
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();
}
行吧,先发这点,之后想到了再添加,该你们了,分享下优化代码的方法吧(我就是想白嫖) |