Esta pregunta es especialmente interesante cuando el bloque if
regresa y finaliza así el método. También se aplica directamente a la forma en que funcionan los comparadores en Java.
He tanto ejecutar cada método (fuelle) 250.000.000 veces y los resultados son los siguientes:
two values if/else - 6.43 millis
three values if/else/if - 8.66 millis
three values if/if - 9.01 millis
Mientras que el peor de los casos tiene 1,4 veces más largo que el mejor hacer aviso de que se trata la suma total de iterar cada uno de estos métodos 250 millones de veces. Suponiendo que tomaría 100 ms para que un ser humano perciba la demora y que la diferencia peor/mejor sea de 2,58 millis, implicaría que necesitaría casi un billón (1000 * 1000 millones) de iteraciones para percibir la diferencia entre los diferentes métodos.
resumirlo: uso if-else
es uno de esos casos en los que la opción más rápida es también el que más legibilidad y menos propenso a errores.
// 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;
}
no sé acerca de la velocidad de procesamiento, pero si usted tiene tantos si los bloques, tal vez usted debería considerar el uso de una sentencia switch. Especialmente para algo así como los días de una semana. –
Hay un cambio de función masivo al cambiar de muchas sentencias if a una instrucción if-elseif. Piensa en lo que realmente hace tu código. –