提高你的Java代码质量吧:性能考虑,数组是首选
来源:互联网 发布:淘宝客服忙不忙 编辑:程序博客网 时间:2024/05/01 15:43
一、分析
数组在实际的系统开发中使用的越来越少,我们通常只有在阅读一些开源项目时才会看到它们的身影,在Java中它确实没有List、Set、Map这些集合使用起来方便,但是在基本类型处理方面,数组还是占优势的,而且集合的底层也是通过数组实现。
二、场景
比如对一个数据集求和的计算:
//对数组求和 public static int sum(int[] datas){ int sum = 0; for(int i = 0; I < datas.length; I++){ sum += datas[i]; } return sum; }
对于一个int类型的数组求和,取出所有元素的数组元素并想家,此算法是基本类型则使用数组效率最高。
//对列表求和计算 public static int sum(List<Integer> datas){ int sum = 0; for(int i = 0; i < datas.size(); i++){ sum += datas.get(i); } return sum; }
注意才相加求和的运算中,做了一个拆箱动作,这对于性能濒于临界的系统是比较危险的。
在初始化List的时候,要进行装箱动作,虽然有整形池在,但不在整形池范围都会产生一个新的Integer对象。
众所周知,基本类型是在栈内存操作的,而对象则是在堆内存中操作的。栈内存的特点是速度快,容量小;堆内存的特点是速度慢,容量大(从性能上讲,基本类型的处理占优势)。
三、建议
性能要求较高的场景中,使用数组替代集合。在实际测试中发现:对于基本类型进行求和计算时,数组的效率是集合的10倍。
- 提高你的Java代码质量吧:性能考虑,数组是首选
- 性能考虑,数组是首选
- 性能考虑,数组首选
- 提高你的Java代码质量吧
- 提高你的Java代码质量吧:警惕数组的浅拷贝
- 提高你的Java代码质量吧:警惕数组的浅拷贝
- 提高你的Java代码质量吧:危险的边界
- 提高你的Java代码质量吧:提倡异常封装
- 提高你的Java代码质量吧:避免基本类型数组转换列表陷阱(Arrays.asList())
- 提高你的Java代码质量吧:让我们疑惑的字符串拼接方式的选择
- 提高你的Java代码质量吧:不同的列表应该选择不同的遍历方法
- 提高你的Java代码质量吧:三元操作符的类型陷阱
- 提高你的Java代码质量吧:不容忽视的四舍五入细节
- 提高你的Java代码质量吧:提防包装类型的null值
- 提高你的Java代码质量吧:不容忽视的四舍五入细节
- 提高你的Java代码质量吧:谨慎包装类型的比较
- 提高你的Java代码质量吧:字符拼接位置的玄机
- 提高你的Java代码质量吧:不容忽视的四舍五入细节
- C#入门教程
- 个人代码小结
- poj 2779 Mr. Young's Picture Permutations
- 关于移植qemu的一些想法吧
- struts2+ajax+DB 图片上传
- 提高你的Java代码质量吧:性能考虑,数组是首选
- 数据流处理
- 本地计算机上的 MSSQLSERVER 服务启动后又停止了 问题分析
- 源码搜
- iOS文件管理 NSFileManager NSFileHandle
- Ubuntu中apt-get命令详解
- MPLab X 配置字的设置
- Linux内核关机重启源码分析
- 挑战编程:抛硬币赌博游戏【转】