Я читал, что некоторые из JVM могут оптимизировать выполнение кода, удалив проверку границ.Я пытаюсь выяснить, какая техника кодирования будет работать лучше.
В методе example1 , приведенном ниже, JVM когда-нибудь это выяснит и устранит проверку границ источника 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);
}
}
Эти фрагменты кода являются только репрезентативными.Я знаю, что в этих примерах проверка границ вряд ли будет иметь значение для производительности.Однако я работаю над приложением со встроенным протоколом, в котором будет добавлена избыточная проверка границ.