2012-04-04 39 views
1

我有一堆Thingy对象,我正在跟踪使用long ID号码。由于我没有关于ID序列的保证,我将它们保存在HashMap<Long, Thingy>中用于随机访问。但是,在Android中,他们有这个非常好的类,名为SparseArray,他们声称比我的HashMap要快。也许最值得注意的是,它没有自动交税。不幸的是,钥匙是int,而不是long正在铸造长到int比long long的自动装配更便宜?

我的long ID的值是这样的,我并不担心本世纪任何时候溢出int的范围。是从longintSparseArray优化是否会比自动装箱longLong为我的HashMap操作便宜吗?我的直觉说是,但我想要一些额外的输入。

+0

这已经在这里问过了。见http://stackoverflow.com/questions/3430671/performance-impact-of-aoboboxing – TechTrip 2012-04-04 20:57:10

回答

3

嗯。铸造longint可能会更快,是的,但不清楚它是否会是正确

+0

正确的事情不太可能发生,但我肯定知道这种可能性。不过,更改ID类型会影响很多地方。的Bleh。我想我现在就放弃它。它工作得很好。 – Argyle 2012-04-04 21:06:04

1

铸造longint肯定会有更快,因为它只是一个JVM指令(l2i)用拳击反对时,内存分配和创建新对象,但是,路易斯指出,你正在失去精度。如果您确定您的ID值在int范围内,那么您可能很安全,但我不会采用这样的假设。

我会做的是调查可能性从Android来源复制该SparseArray类,并修改它使用long键。我目前正在审视它,乍看之下肯定是可能的。

+0

这个想法发生在我身上。 – Argyle 2012-04-04 21:16:26