preguntó a un unrelated question donde tuve código como este:Java: si de retorno si retorno vs si-retorno-elseif-retorno
public boolean equals(Object obj)
{
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
// Check property values
}
Tengo un comentario que afirmaba que esto no era óptimo, y que en su lugar (si he entendido correctamente) debe hacer esto:
public boolean equals(Object obj)
{
if (this == obj)
return true;
else if (obj == null)
return false;
else if (getClass() != obj.getClass())
return false;
// Check property values
}
Debido a las declaraciones de retorno, no puedo ver por qué ninguno de ellos debe ser más eficiente o más rápido que el otro. Dado un determinado objeto, ambos métodos tendrían que hacer un número igual de comprobaciones por lo que puedo ver. Y debido a las declaraciones de devolución, no se ejecutará ningún código adicional en ninguna de ellas.
¿Falta algo aquí? ¿Hay algo para eso? ¿Hay algunas optimizaciones del compilador o algo así o lo que sea?
Sé que esto es la optimización de micro y lo más probable es que me quede con el primero de todos modos, ya que creo que se ve más limpio con todos los ifs en la misma posición. Pero no puedo evitarlo; ¡Soy curioso!
Dime el nombre del tipo que hizo ese comentario y lo rechazaré por eso;) –
Aconsejaría no molestarme sobre tales optimizaciones de nivel micro. Siempre puedes encontrar puristas que dividen bien el cabello. Tales optimaciones son manejadas bien por el compilador y las posibilidades son que el primero ya se reduzca a la segunda versión (o viceversa dependiendo de lo que el compilador considere que es bueno). –
@Jigar Joshi - un virtual (+1) en vez de levantar la mano :-) –