我之前有一篇关于SparseArray的博客(Android SparseArray 系列 http://www.binkery.com/archives/351.html),但是发现很多项目里,这个特殊的工具类没有被很好的使用。
SparseArray 设计得很棒
SparseArray 以时间换空间
用不好 SparseArray 的话,还不如直接用数组。
这点利润值得吗?如果说你想定义一个 int 数组,每个 int 占用4个字节,如果数组长度为1024,那么占用内存为 4k byte,很大吗?如果使用 SparseArray,哪怕它一个字节都不占,你也就是省下4k字节的内容。在一个 Android App 里,你会用到多长的数组?多少这样长度的数组?在一个项目里,你使用SparseArray来替换数组带来的效益貌似不是很可观。
风险貌似也不小。本来你想定义一个长度为1024 的int数组,发现别人都在使用SparseArray,于是你也用SparseArray替换掉了数组,但是你的初始化的时候,用一个 for 循环,给 SparseArray put 了1024个 int 值,而且都是 0,你知道你在做什么吗?好吧,我相信,在现在的CPU能力下,多出来的这些运算量也是小case了。
所以,在项目里,不管你是直接用数组,还是用 SparseArray,SparseArray用对了,还是用错了,基本上肉眼你是看不出差距来的。这也导致了很多人没有仔细去研究 SparseArray 。
但是不管怎么着,SparseArray 的源码相当的漂亮,有时间有兴趣,很值得研究,能学很多东西。
另外一个想法,就像前些天在CSDN上看到的,没有完美的设计,只有合理的设计。满足当前需要就好,像初级程序员一样,使用数组来完成这项工作又怎样?这个项目有复杂到需要你去扣这点内存吗?
- EOF -
本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动。
转载请注明:文章转载自 Binkery 技术博客 [https://binkery.com]
本文标题: 由 SparseArray 带来的程序设计的思考
本文地址: https://binkery.com/archives/367.html