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