java数组的性能分析

对于初学者来说,学习数组时都会有这样的疑问,我们发现其实在存储数据上,是有很多方法可以替代数组的,所以对于数组的使用还持有怀疑态度。但是数组的存在就是为了提升保存数据的速度而产生的,对于这方面的优势,我们会通过下面的实例来进行说明,在此之前先来对其性能进行简单分析。

1、说明

数组和其他类型的容器有三个区别:效率、类型和保存基本类型的能力。在java中,数组是存储和随机访问对象引用序列的最有效的方式。数组在项目设计中的使用越来越少,不如List和set方便。但是数组在速度等方面还是有一些优势的,集合类的底层是通过数组实现的。

2、性能对比实例

下面利用数组和list用求和来做一下比较:

Longtime1=System.currentTimeMillis();
for(inti=0;i<100000000;i++){
sum+=arrays[i%10];
}
Longtime2=System.currentTimeMillis();
System.out.println("数组求和所花费时间:"+(time2-time1)+"毫秒");
Longtime3=System.currentTimeMillis();
for(inti=0;i<100000000;i++){
sum+=list.get(i%10);
}
Longtime4=System.currentTimeMillis();
System.out.println("List求和所花费时间:"+(time4-time3)+"毫秒");
--------------Output:
数组求和所花费时间:696毫秒
List求和所花费时间:3498毫秒

从上面的时间消耗上面来说,数组对于基本类型的求和计算的速度是集合的5倍左右。其实在list集合中,求和当中有一个致命的动作:list.get(i)。这个动作是进行拆箱动作,Integer对象通过intValue方法自动转换成一个int基本类型,在这里就产生了不必要的性能消耗。

所以在性能要求较高的场景中请优先考虑数组!

原文来自:https://www.py.cn
© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容