Этот вопрос особенно интересен, когда блок if
возвращает таким образом завершение метода. Это также относится непосредственно к тому, как работают компараторы в Java.
Я, таким образом, работать каждый метод (пыльник) 250.000.000 раз и результаты таковы:
two values if/else - 6.43 millis
three values if/else/if - 8.66 millis
three values if/if - 9.01 millis
Хотя в худшем случае требуется в 1,4 раза больше, чем лучший друг сделать уведомление, что это суммарная сумма итерации каждого из этих методов 250 миллионов раз. Предполагая, что для восприятия задержки потребуется 100 мс, а наихудшая/лучшая разница - 2,58 миллиса, это означало бы, что вам понадобится почти триллион (1000 * 1000 миллионов) итераций, чтобы понять разницу между различными методами.
Подводя итог: использование if-else
это один из тех случаев, когда самый быстрый вариант также является одним с более разборчивости и менее подвержен ошибкам.
// methods used to measure difference between if and if/else
/** equality is not important **/
private static int comparatorOfIfElse(int a, int b) {
if(a < b) return -1;
else return 1;
}
/** equality is taken into account using if/else **/
private static int comparatorOfIfElseIf(int a, int b) {
if(a < b) return -1;
else if(a > b) return 1;
return 0;
}
/** equality is taken into account using only if **/
private static int comparatorOfIf(int a, int b) {
if(a < b) return -1;
if(a > b) return 1;
return 0;
}
Я не знаю о скорости обработки, но если у вас так много блоков, возможно, вам стоит подумать об использовании оператора switch. Особенно для чего-то вроде дней недели. –
Существует массовое изменение функции при переходе от многих операторов if к одному оператору if-elseif. Подумайте о том, что действительно делает ваш код. –