铸造多长时间比自动装箱便宜到长?

时间:2012-04-04 20:47:12

标签: java android casting autoboxing

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

long ID的值是这样的,我不担心本世纪任何时候溢出int的范围。对于我的long操作,从intSparseArray以及long优化的转换是否比自动装箱LongHashMap更便宜?我的直觉是肯定的,但我想要一些额外的意见。

2 个答案:

答案 0 :(得分:3)

庵。将long投射到int可能会更快,是的,但不清楚它是否正确

答案 1 :(得分:1)

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

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