還原真像:ArrayList性能幾乎完美,100萬數據測試

背景

程序員面試題中經常遇到ArrayList與LinkedList區別,現實的測試情況肯定沒多少人清楚。

理論是這樣,現實測試情況很打臉啊。

學習目標

搞清楚JDK1.8種ArrayList與LinkedList的性能情況

代碼例子

環境準備:java jdk1.8版本,100萬數據量,臺式機8G內存、雙核【速度很快哦】

注意測試結果,跟硬件配置關係很大,返回時間都是毫秒

程序員注意啦:NUM是100萬,

測試結果

批量循環100萬次添加元素,ArrayList、LinkedList的表現

【尾部加元素】,性能都是差不多的。【首部加元素】,LinkedList就完虐ArrayList了

為啥首部加元素ArrayList慢了?

原因就是多瞭如下代碼,

源碼說明,如下。

ArrayList的尾部添加元素,就比首部添加元素少個COPY操作。

單個元素添加

性能沒顯著差異

ArrayList首部添加一個元素,性能消耗也非常小的。

核心測試代碼

arrayList.add(0,new Content("11111", "程序汪汪",2,"2018-03-16"));

linkedList.add(new Content("11111", "程序汪汪",2,"2018-03-16"));

隨機獲取

性能沒顯著差異

核心測試代碼

arrayList.get(555555);

linkedList.get(555555);

單個刪除

性能沒顯著差異

核心測試代碼

arrayList.remove(arrayList.get(555555));

linkedList.remove(555555);

總結

除了在批量首部添加元素ArrayList性能差,其他情況都非常強勁啊。放心的用ArrayList吧,我這可是100萬數據量,平時那點數據量性能消耗就更小了。

又get到新知識的,請關注啊