1. 程式人生 > >坑【4】陣列和List效能比較

坑【4】陣列和List效能比較

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毫秒以下 * 但是intList2億數字下,jdk1.8也只是相差幾十毫秒,效能問題幾乎可以忽略不及 * 之前看過部落格說intList的效能差別較大,是因為int --> Integer 裝箱操作 和Integer --> int的拆箱操作比較浪費時間,親測在1.8下,如上,效能問題可以忽略 */