博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
性能考虑,数组是首选
阅读量:7297 次
发布时间:2019-06-30

本文共 979 字,大约阅读时间需要 3 分钟。

一、分析 

数组在实际的系统开发中使用的越来越少,我们通常只有在阅读一些开源项目时才会看到它们的身影,在中它确实没有List、Set、Map这些集合使用起来方便,但是在基本类型处理方面,数组还是占优势的,而且集合的底层也是通过数组实现。 

二、场景 

比如对一个数据集求和的计算

1 //对数组求和 2 public static int sum(int[] datas){ 3     int sum = 0; 4     for(int i = 0; I < datas.length; I++){ 5         sum += datas[i]; 6     } 7     return sum; 8 }

对于一个int类型的数组求和,取出所有元素的数组元素并相加,此算法中如果是基本类型则使用数组效率最高,使用集合效率次之.

1 //对列表求和计算 2 public static int sum(List
datas){ 3 int sum = 0; 4 for(int i = 0; i < datas.size(); i++){ 5 sum += datas.get(i); 6 } 7 return sum; 8 }

注意才相加求和的运算中,做了一个拆箱动作(sum += datas.get(i); ),这对于性能濒于临界的系统是比较危险的 

在初始化List的时候,要进行装箱动作,把一个int类型包装成一个Integer对象,虽然有整形池在,但不在整型池范围都会产生一个新的Integer对象  

众所周知,基本类型是在栈内存操作的,而对象则是在堆内存中操作的。栈内存的特点是速度快,容量小;堆内存的特点是速度慢,容量大(从性能上讲,基本类型的处理占优势)。

其次,在进行求和计算(或者其他遍历计算) 时要做拆箱动作,因此无谓的性能消耗也就产生了.

三、建议 

性能要求较高的场景中,使用数组替代集合。在实际测试中发现:对于基本类型进行求和计算时,数组的效率是集合的10倍。

 

本文转自SummerChill博客园博客,原文链接:http://www.cnblogs.com/DreamDrive/p/5418528.html,如需转载请自行联系原作者

你可能感兴趣的文章
第三课:sea.js模块加载原理
查看>>
<<The C Programming Language>>自編習題答案
查看>>
日本語の接続詞
查看>>
如何用java实现数据脱敏
查看>>
laya的UI编辑器
查看>>
ORA-12516错误解决
查看>>
网页设计美工过程留心的标题
查看>>
hdu4223(dp)
查看>>
MVC view操作(Razor语法)
查看>>
IIS7启动优化
查看>>
C++中的return和exit区别
查看>>
XML--Java中的四种常见解析方式--jdom与dom4j
查看>>
实验一
查看>>
My Open Source Projects
查看>>
常用正则
查看>>
LeetCode解题思路:461. Hamming Distance
查看>>
myeclipse eclipse 不要验证 加速 优化
查看>>
CCF201509-3 模板生成系统(100分)
查看>>
POJ3751 时间日期格式转换【日期计算】
查看>>
努力吧,现在也不晚
查看>>