作者对阿里公约中对集合需要给定初始化值对性能的测试:
测试代码:
/**
* @Author: 徐建华
* @Date: 2018/9/21 14:07
*/
public class HashMapTest {
public static void main(String[] args) {
Long times = 0L;
for (int j = 0; j < 10; j++) {
HashMap<String, String> map2 = new HashMap<>(500);
long startMapTime2 = System.currentTimeMillis();
for (int i = 0; i < 1000000000; i++) {
map2.put("map", "map");
}
long endMapTime2 = System.currentTimeMillis();
Long time = endMapTime2 - startMapTime2;
times = times + time;
System.out.println("加了初始容量的时间:" + j + "次" + time);
}
System.out.println("加了初始容量的平均时间:" + (times / 10));
System.out.println("=======================================");
Long times1 = 0L;
for (int j1 = 0; j1 < 10; j1++) {
HashMap<String, String> map3 = new HashMap<>();
long startMapTime2 = System.currentTimeMillis();
for (int i = 0; i < 1000000000; i++) {
map3.put("map", "map");
}
long endMapTime2 = System.currentTimeMillis();
Long time = endMapTime2 - startMapTime2;
times1 = times1 + time;
System.out.println("没加初始容量的时间:" + j1 + "次" + time);
}
System.out.println("没加初始容量的平均时间:" + (times1 / 10));
}
}
测试结果:
测试结论:
确实快,但是要求在数据量很大的情况下才会效果明显,需不要做这块的优化,可以跟据自己的业务要求做调整.