gpt4 book ai didi

java - JVM能否优化数组的多次读取

转载 作者:行者123 更新时间:2023-11-30 09:25:52 24 4
gpt4 key购买 nike

JVM 可以在多次读取同一个索引时优化数组读取吗?请考虑以下事项:

public static void foo(int[] array) {
for (int i=0; i<array.length; i++) {
int value1 = array[i];
...
int value2 = array[i];
...
}
...
}

array[i] 在循环中被读取两次。假设 array[i] 没有在循环中重新分配,是否允许 JVM 假设 array[i] 没有改变并因此只读取它的值一次?由于 array 是传入的可变对象,因此可以想象它在第一次和第二次读取之间发生了变化。

我查看了生成的字节码,它确实读取了两次 array[i] (daload)。是否允许 JVM 将其优化为一次读取?

最佳答案

是的,优化器只考虑单线程数据流,它不关心变量是否被另一个线程更改,除非涉及 volatile/synchronized。

即使没有优化,第二次读取也应该非常快,大约 1ns,因为数据很可能在 L1 缓存中。

关于java - JVM能否优化数组的多次读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15101334/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com