我读过一些 JVM 可以通过删除边界检查来优化代码执行。我想弄清楚的是哪种编码技术会更好。
在下面的方法example1中,JVM 是否会弄清楚并消除对source[index]引用的边界检查?
example2是更好的代码实践吗?看起来是这样,但在循环内的某些算法中,索引超出范围是正常情况。因此,您不想在该循环内生成大量 Exception 对象。
public void example1(int [] source, int index) {
if (index >= 0 && index < source.length)
System.out.println("Value is " + source[index]);
else
System.out.println("Out of range: " + index);
}
public void example2(int [] source, int index) {
try {
System.out.println("Value is " + source[index]);
} catch (IndexOutOfBoundsException exp) {
System.out.println("Out of range: " + index);
}
}
这些代码片段仅具有代表性。我知道在这些示例中,边界检查对性能几乎没有影响。但是,我正在开发一个嵌入式协议应用程序,其中冗余边界检查将加起来。