【发布时间】:2015-05-23 09:23:35
【问题描述】:
我正在使用LinkedHashMap<Integer, Integer> 来存储 2D 游戏中瓷砖上的图层值。较大的数字会覆盖较小的数字。
在我的绘图函数中,我遍历值集并绘制每个值。这意味着我正在拆箱值(width * height * numLayers) 次。我正计划移植到 Android,所以我希望尽可能高效,我认为这太过分了?
我使用 Map 的原因是因为层数(键)很重要:4 以上的键被绘制在玩家上方等。所以我经常需要跳过一堆键。
我可能只使用int[10],因为我不需要那么多层,但是与我当前的 HashMap 可以有键 0 相比,所有未使用的层每个都将占用 32 位, 9 只占用 64 位。
【问题讨论】:
-
拆箱 非常有效——它所做的只是从一个对象中获取一个数字。它不会创建新对象或任何东西。您是否有任何证据表明这实际上给您带来了问题?
-
我也在做大量的拳击,因为我在任何给定时间都加载了 2000 个块。不过,这更多的是内存问题而不是性能问题。
标签: java android linkedhashmap autoboxing unboxing