【发布时间】:2013-09-29 13:53:57
【问题描述】:
我有一本 java 游戏书建议尽可能将所有数据实现为 Int,该类型运行速度最快。它说 Byte、Char 和 Boolean 无论如何都是作为 Int 实现的,因此您不会节省空间,并且由于 Byte 数据而最终不得不在代码中进行的转换会减慢它的速度。例如,
需要一个演员表a = (字节)(b+c);
由于加法结果是 Int,即使 a、b 和 c 都声明为 Bytes。
我目前有一个巨大的 2D 数组声明为我的游戏的字节,以节省空间和按位运算。真的是节省空间吗?我还在示例中看到了对 Ints 进行的按位运算,按位运算在 Ints 上是否按预期工作?
【问题讨论】:
-
那是什么书?听起来像一个可怕的一个
-
你能说出(“羞耻”)这本书的名字吗?我很想看看它还有什么像这样的小宝石。我的猜测是,这是一种混乱的理解……在堆栈上或在布置类的数据结构时; JVM可能选择将字节变量填充到 4 个字节。即使在 C 语言下,这也是一种常见的优化。但你永远不能确定编译器/JVM 会这样做。存在优化是因为 some 架构上的 1 字节读取是 4 字节读取,然后是掩码/位移。
-
其实这是一本“傻瓜”的书,通常很可靠。提高代码效率的“10 年代的一部分”十个技巧之一。
-
@michael 这本书什么时候出版的?或者它涵盖什么版本的 Java?
-
@couling 实际上,
byte类型的填充变量是 JLS 在单个变量的情况下强制要求的(数组不是这样)。查看我对链接的回答。