坑【4】陣列和List效能比較
阿新 • • 發佈:2019-02-11
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 } returnsum; } // 對列表求和 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下,如上,效能問題可以忽略 */