public class Test {
private static int count = 200000000;
public static void main(String[] args){
int[] datas = new int[count];
// List<Integer> datasList = new ArrayList<>(count);
Integer[] datas2 = new Integer[count];
for(int i=0;i<count;i++){
datas[i] = 0;
// datasList.add(0);
datas2[i] = 0;
}
Long start = System.currentTimeMillis();
sum(datas);
Long start1 = System.currentTimeMillis();
// sum(datasList);
// Long start2 = System.currentTimeMillis();
sum(datas2);
Long start3 = System.currentTimeMillis();
System.out.println(start1-start);
// System.out.println(start2-start1);
System.out.println(start3-start1);
}
// 对数组求和
public static int sum(int[] datas) {
int sum = 0;
for (int i = 0; i < datas.length; i++) {
sum += datas[i]; // 1
}
return sum;
}
// 对列表求和
public static int sum(List<Integer> datas) {
int sum = 0;
for (int i = 0; i < datas.size(); i++) {
sum += datas.get(i); // 2
}
return sum;
}
// 对数组求和
public static int sum(Integer[] datas) {
int sum = 0;
for (int i = 0; i < datas.length; i++) {
sum += datas[i]; // 1
}
return sum;
}
}
/**
* int 数组和Integer数组,在2亿数字下, jdk1.8都在100毫秒以下
* 但是int和List在2亿数字下,jdk1.8也只是相差几十毫秒,性能问题几乎可以忽略不及
* 之前看过博客说int和List的性能差别较大,是因为int --> Integer 装箱操作 和Integer --> int的拆箱操作比较浪费时间,亲测在1.8下,如上,性能问题可以忽略
*/
【35】数组和List性能比较
最新推荐文章于 2024-03-02 17:54:57 发布