Rendimiento del conmutador GWT: una sugerencia de PMD

PMD sugirió en mi proyecto GWT que debería cambiar mi switch a múltiples ifs si tiene menos de 3 ramas. Sé que esto está compilado en Javascript, pero me preguntaba si hacía alguna diferencia en GWT. ¿Crees que el Javascript generado es más eficiente en comparación con switch? ¿El compilador GWT actual (2.4) realiza alguna optimización en esto?

preguntado el 09 de marzo de 12 a las 15:03

¿Tiene algún problema de rendimiento aquí? Si no es así, ni siquiera piense en esa optimización del rendimiento. Acerca de la legibilidad: creo switch es más fácil de leer y expandir, y menos propenso a errores cuando se usa enums (además, obtienes soporte para herramientas). Entonces cambiaría la configuración de PMD, pero es una cuestión de gustos. -

A menos que seas un loco del rendimiento y el interruptor se invoque millones de veces, creo que puedes descartarlo sin más investigación. -

Estoy de acuerdo contigo, sin embargo, los gráficos de tendencias de PMD son tipos estrictos. -

Y eso es bueno, en general. Pero no tiene que estar de acuerdo con todas las suposiciones que ellos hacen: TooFewBranchesForASwitchStatement "Los swith están diseñados para ramas complejas y permiten que las ramas compartan el tratamiento. No es aconsejable usar un interruptor para unas pocas ramas, ya que los interruptores no son tan fáciles de entender como if. En este caso, lo más probable es que sea una buena idea utilizar una instrucción if en su lugar, al menos para aumentar la legibilidad del código ". Yo, como he dicho, estoy completamente en desacuerdo y cambiaría esa configuración. -

1 Respuestas

Según este sitio: http://oreilly.com/server-administration/excerpts/even-faster-websites/writing-efficient-javascript.html#the_switch_statement encontrado a través de esta respuesta: https://stackoverflow.com/a/2923007/66416 Si importa:

En JavaScript, las declaraciones if son generalmente más rápidas que las declaraciones switch cuando solo hay una o dos condiciones para evaluar.

Un escaneo rápido de un archivo GWT 2.4 compilado no encontró reemplazos de declaraciones de cambio 'pequeñas' en declaraciones if. Entonces, en realidad, podría ser una sugerencia útil de PMD.

contestado el 23 de mayo de 17 a las 13:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.