Java 优化器和冗余数组评估

标签 java performance optimization compiler-optimization

这是一个关于 Java 优化的非常基本的问题。

如果您有一个简单的 for 循环来遍历数组并在循环的 header 中使用 array.length 而不是之前对其进行评估,这样您就只执行一次(我几乎总是这样做):

for(int i=0; i<array.length;i++) { ... }

能否优化该语句,使 JVM 知道数组在循环期间是否发生变化,从而不必每次都重新计算 array.length

最佳答案

if another thread is not modifying the array concurrently, will array.length be effectively evaluated only once,

更关键的是,除非该字段是 volatile,否则 JVM 将做出这个假设,无论它是否正确。

关于Java 优化器和冗余数组评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14711125/

相关文章:

java - 在 ArrayList Java 中操作字符串

java - 在 Java 中使用 XSLT 将 XML 转换为 HTML 字符串

sqlite - 在 sqlite 中使用 LIKE 区分大小写的便捷方法

python - Gurobipy 优化 : Constraint to make variable value to be greater than 100 OR equal to 0

Java循环遍历数组的一半

java - 如何显示在文本中出现四次或多次的所有唯一单词的列表?

python - 为什么列表理解比 numpy 的数组乘法快得多?

java - 在新生代 GC 中幸存下来的对象的百分比?

performance - iis7增加每个工作进程的线程/并发请求数

c++ - 包含许多 "if"的关键循环,其输出为常量 : How to save on condition tests?