在Java中使用int字段提高字节数组访问的读取性能?

在Java中使用int字段提高字节数组访问的读取性能?,java,arrays,performance,jvm,Java,Arrays,Performance,Jvm,这是一个更好地理解Java JVM的问题 假设我们有一个16字节数组的类。它可以大于或小于16。以16岁为例。 每个字节用作8个标志的集合。大量阅读。很少有人写信 通过将4个字节融合到int字段中来创建4个int字段对性能有何影响。这样就不需要在读取这些标志时进行数组绑定检查。但是,您需要移动输入标志以寻址int中的正确位 标记写入在字节数组和ints缓存上完成。 原因可能是字节数组在其他地方使用。我们不知道。我们只知道我们有这些字节,我们必须访问它的标志很多次 在类实现中引入int缓存值得吗

这是一个更好地理解Java JVM的问题

假设我们有一个16字节数组的类。它可以大于或小于16。以16岁为例。 每个字节用作8个标志的集合。大量阅读。很少有人写信

通过将4个字节融合到
int
字段中来创建4个int字段对性能有何影响。这样就不需要在读取这些标志时进行数组绑定检查。但是,您需要移动输入标志以寻址
int
中的正确位

标记写入在字节数组和
ints
缓存上完成。 原因可能是字节数组在其他地方使用。我们不知道。我们只知道我们有这些字节,我们必须访问它的标志很多次

在类实现中引入
int
缓存值得吗


编辑:我意识到其他人的写入不会被推送到
int
缓存。因此缓存将给出错误的标志。但让我们想象一下,有一个系统范围的缓存刷新事件。

我觉得这是一个过早的优化。使用
long[]
在内部存储位。某些
int
字段而不是
byte
数组似乎不太可能实现任何性能改进。JVM需要计算字节数组中的偏移量,但它还需要执行大约相等的工作来找到正确的
int
字段。@WW。这就是我一直在寻找的答案。在JVM内部,查找int字段与查找字节数组偏移量大致相同。有人能证实这一点吗?我不是JVM专家。然而,这将与正确提到的4castle的位集实现相矛盾。@4castle很感激。我觉得这是一个过早的优化。使用
long[]
在内部存储位。某些
int
字段而不是
byte
数组似乎不太可能实现任何性能改进。JVM需要计算字节数组中的偏移量,但它还需要执行大约相等的工作来找到正确的
int
字段。@WW。这就是我一直在寻找的答案。在JVM内部,查找int字段与查找字节数组偏移量大致相同。有人能证实这一点吗?我不是JVM专家。然而,这将与正确提到的4castle的位集实现相矛盾。@4castle感谢。