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

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

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

背景

程序员面试题中经常遇到ArrayList与LinkedList区别,现实的测试情况肯定没多少人清楚。

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

 

理论是这样,现实测试情况很打脸啊。

学习目标

  • 搞清楚JDK1.8种ArrayList与LinkedList的性能情况

代码例子

环境准备:java jdk1.8版本,100万数据量,台式机8G内存、双核【速度很快哦】

注意测试结果,跟硬件配置关系很大,返回时间都是毫秒

程序员注意啦:NUM是100万,

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

 

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

 

测试结果

批量循环100万次添加元素,ArrayList、LinkedList的表现

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

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

 

为啥首部加元素ArrayList慢了?

原因就是多了如下代码,

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

 

源码说明,如下。

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

 

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

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

 

单个元素添加

性能没显著差异

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

核心测试代码

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

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

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

 

随机获取

性能没显著差异

核心测试代码

arrayList.get(555555);

linkedList.get(555555);

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

 

单个删除

性能没显著差异

核心测试代码

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

linkedList.remove(555555);

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

 

总结

  • 除了在批量首部添加元素ArrayList性能差,其他情况都非常强劲啊。
  • 放心的用ArrayList吧,我这可是100万数据量,平时那点数据量性能消耗就更小了。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值