Cualquier compilador realizará la tabla de salto si puede verificar que los valores sean razonablemente compactos. (Dudo si están en este caso, siendo múltiplos de 10.)
Esto es una micro-optimización. La micro optimización solo tiene sentido si sabes que sí. Típicamente, hay "peces para freír" más grandes en otros lugares, en forma de llamadas a función de las que se podría hacer sin ellas. Sin embargo, si ya ha desactivado las luces del día de este código, y su perfil muestra que una buena fracción (como el 10% o más) de tiempo va a estas declaraciones IF (y no a sus contenidos), entonces ayuda. Esto puede suceder, por ejemplo, en un intérprete de código de bytes.
Agregado: Otra razón por la que me gusta usar switch
es, incluso si no hace una tabla de saltos: al pasar por el código en un depurador, va directamente al caso apropiado, en lugar de hacerme pasar por un muchas declaraciones falsas if
. Lo hace más fácil de depurar.
Dupe de [es "else if" más rápido que "switch() caso "?] (http://stackoverflow.com/questions/767821/is-else-if-faster-than-switch-case), [¿Cuál es la diferencia relativa de rendimiento de if/else versus la instrucción switch en Java?] (http://stackoverflow.com/questions/2086529/what-is-the-relative-performance-difference-of-if-else-versus-switch-statement-in), [If vs. Switch Speed] (http://stackoverflow.com/questions/445067/if-vs-switch-speed), etc. – BalusC
Eso no es un dup porque esta pregunta es específica de java. – sixtyfootersdude
En realidad, tienes razón. Este es un duplicado de http://stackoverflow.com/questions/2086529/what-is-the-relative-performance-difference-of-if-else-versus-switch-statement-in. Aunque no es un duplicado de los otros porque no son específicos de Java. Molesto cómo la eficiencia y el rendimiento son etiquetas diferentes. – sixtyfootersdude