有效使用内存(箴Android应用程序性能优化)





,,排序的数组可以远远超过16位值排序数组的32位或64位的值,因为它使用不同的算法。虽然int和长数组排序使用一些版本的快速排序算法,简单的数组排序使用计数排序,排序在线性时间。使用短类型在这种情况下杀死一石二鸟:更少的内存消耗(2字节而不是4 int数组的值,和长8字节数组的值),性能得到了改进。
注意:许多错误地认为快速排序总是最有效的排序算法。您可以参考阵列。java在Android源代码,看看每种类型的数组进行排序。
,,一个不太常见的解决方案是使用多个数组来存储你的数据用多个数组储存数据。例如,如果应用程序需要存储许多整数都在0到100000的范围内,那么你可能会分配一个32位值的数组存储作为短类型只能使用存储值从-32768年到32767年。根据值是如何分布,
,,你可能会有许多值等于或小于32767。在这种情况下,它可能是有益的使用两个数组:一个0到32767之间的值(即短值数组),和一个用于所有值大于32767 (int数组值)。虽然这很可能会导致更大的复杂性复杂,节省内存和潜在的性能提升可能使解决方案价值,甚至让你优化某些方法的实现。例如,一个方法,发现最大的元素可能只需要经过int值的数组。(只有int数组值为空会经历短暂的值的数组。只有int数组是空的时候才遍历短数组)

,,,这不是一种清单第4 - 9和表4 - 2所示是布尔类型。事实上,排序数组的布尔值几乎没有任何意义。然而,在可能情况下,您需要存储一个相当大量的布尔值和通过索引引用它们。为此,您可以简单地创建一个数组。虽然这工作,这将导致许多位被浪费8位将分配给每个条目数组中当一个布尔值只能真或假。换句话说,只需要一个比特来表示一个布尔值。为此,BitSet类定义:它允许您将布尔值存储在一个数组(允许你把它们通过索引),同时使用最少的内存数组(每个条目一点)。如果你看的公共方法在BitSet BitSet类和它的实现。java,您可能会注意到一些事情,值得你的注意:
,,,BitSet的后端后端长数组值。你可能会取得更好的
性能使用int数组值。(测试结果显示约10%的涨幅当切换到一个int数组。)
,,,代码中的一些笔记表明有些事情应该改变为更好的性能(例如,看到评论从FIXME)。
,,,,你可能不需要从这个类的所有特性。
为所有这些原因,这将是可接受的对你实现你自己的类,基于BitSet
可能。java来提高性能。



有效使用内存(箴Android应用程序性能优化)