1

我有一堆使用ID 号Thingy跟踪的对象。long由于我无法保证 ID 序列,因此我将它们保存在HashMap<Long, Thingy>随机访问中。然而,在 Android 中,他们有一个非常好的类SparseArray,他们声称它比我HashMap使用它的方式更快。也许最值得注意的是,它没有自动装箱税。不幸的是,键是int,不是long

我的longID 值如此之大,以至于我不担心超出int本世纪任何时候的范围。对于我的操作来说,从long转换到intSparseArray优化会比自动装箱更便宜吗?我的直觉说是的,但我想要一些额外的输入。longLongHashMap

4

2 回答 2

3

嗯。转换longint可能会更快,是的,但尚不清楚它是否正确

于 2012-04-04T20:51:54.173 回答
1

long强制转换int肯定会更快,因为它只是一个 JVM 命令 (l2i),它在使用装箱时反对内存分配和新对象创建,但是,正如 Louis 指出的那样,你正在失去精度。如果您确定您的 id 值在int范围内,那么您可能是安全的,但我不会接受这样的假设。

我要做的是调查从 Android 源复制 SparseArray 类并将其修改为使用long键的可能性。我目前正在研究它,乍一看这绝对是可能的。

于 2012-04-04T21:14:49.687 回答