2010-11-09 9 views
6

habla sobre el rendimiento de Java ... ¿qué es mejor? if..else o múltiple simple si¿Qué es mejor? if ... simple o múltiple simple si

if(condition) { 
    some_code; 
    return value; 
} 
else if(condition) { 
    some_code; 
    return value; 
} 
else if(condition) { 
    some_code; 
    return value; 
} 
else { 
    some_code; 
    return value; 
} 

o

if(condition) { 
    some_code; 
    return value; 
} 

if(condition) { 
    some_code; 
    return value; 
} 

if(condition) { 
    some_code; 
    return value; 
} 

some_code;  
return value; 

interesado en sus pensamientos

Thnx!

+0

Si hay una diferencia en el rendimiento, probablemente sea insignificante. –

+4

No soy un experto, pero me sorprendería que hubiera alguna diferencia, pero la respuesta a todas las preguntas sobre rendimiento es "pruébelo usted mismo y vea". (Y la otra respuesta es "probablemente este no sea su cuello de botella".) Esto me parece una pregunta * style *. – Cascabel

+0

No importa "some_code", solo cómo java ejecuta la instrucción "if" – dnlmax

Respuesta

16

No hay diferencia, en cuanto al rendimiento. Elija la opción más legible, que podría depender de lo que haga el código.

En general, no se preocupe por estas micro-optimizaciones. La optimización solo debe venir después de haber determinado que hay un problema de rendimiento que debe corregirse.

"Deberíamos olvidarnos de las pequeñas eficiencias, digamos aproximadamente el 97% del tiempo: premature optimization es la raíz de todos los males". — Donald Knuth

+3

+1 para "no te preocupes por μ-opt" –

+2

jeje, gran cita! – dnlmax

0

Estoy seguro de que un solo if sería mejor, porque cada vez que se encuentra una condición verdadera, se puede omitir con seguridad las otras alternativas else ya que no se ejecutarán. Si utilizó múltiples if s, todas las condiciones posteriores tendrían que evaluarse de todos modos (incluso si, como creo que está suponiendo, serían mutuamente excluyentes).

+0

Pero en el ejemplo, no se ejecutarán de todos modos porque la función regresa antes de que se llegue a ellos. –

+0

No hace la diferencia en este ejemplo de todos modos, ya que hay una declaración 'return' en cada cuerpo' if'. –

+0

Pero puede hacer eso de todos modos debido a la forma de construcción 'retorno'. –

1

La otra cosa ... si le das ejemplo, no necesita los return s si se trata de una función con valor de retorno. En ese caso, el if ... else será más fácil de leer.

Además, se debe preferir el if ... else porque hace explícito que estos casos son mutuamente excluyentes.

Si hay una diferencia de rendimiento aquí, entonces su compilador/intérprete apesta.

+0

Si hay una diferencia de rendimiento, entonces el compilador apesta. – starblue

+0

Podría ser el intérprete, para un lenguaje interpretado. – uckelman

0

Depende de la situación.

Si las condiciones son mutuamente excluyentes, utilice else. Esto hará que Java no verifique ninguna de las condiciones después de la que se encuentra verdadera.

Si no son mutuamente excluyentes, el uso de una lista de if sin otra causa podría ocasionar múltiples casos.

En su caso, con devoluciones en cada uno, el rendimiento será el mismo porque el mismo número de comparaciones tendrá que hacerse sin importar nada.

+0

No hará ninguna diferencia si las condiciones son mutuamente excluyentes. (Sería un si no hubiera un retorno en cada cláusula 'entonces' ...) –

0

No me preocuparé por el rendimiento aquí tanto como la legibilidad del código y el mantenimiento. Como se mencionó, el rendimiento será esencialmente idéntico después de compilar el código.

Prefiero ser más explícito sobre mis condiciones, en lugar de permitir que el comportamiento implícitamente "desaparezca".

Además, el single if no se evaluará más rápido que el if else. La ruta else nunca se comprobará si el caso es verdadero.

Cuestiones relacionadas