还原真像:ArrayList性能几乎完美,100万数据测试

还原真像:ArrayList性能几乎完美,100万数据测试

程序汪汪 2018-07-17 22:17:21

背景

程序员面试题中经常遇到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万数据量,平时那点数据量性能消耗就更小了。
经验分享 程序员 微信小程序 职场和发展