Sí, pero hasta cierto punto, es una buena oportunidad educativa para ver lo que sucede bajo el capó, pero probablemente debería hacerse con moderación.
Puede ser algo bueno, ya que mirar el bytecode puede ayudar a entender cómo se compilará el código fuente de Java en bytecode de Java. Además, puede brindar algunas ideas sobre qué tipo de optimizaciones realizará el compilador y, quizás, algunas limitaciones sobre la cantidad de optimización que puede realizar el compilador.
Por ejemplo, si se realiza una concatenación de cadenas, javac
optimizará la concatenación en el uso de un StringBuilder
y la realización de append
métodos para concatenar los String
s.
Sin embargo, si la concatenación de cadenas se realiza en un bucle, una nueva StringBuilder
pueden ser instanciadas en cada iteración, lo que lleva a una posible degradación del rendimiento en comparación con instanciar manualmente un StringBuilder
fuera del bucle y sólo realizar append
s dentro del bucle.
Sobre el tema del JIT. La compilación just-in-time va a ser específica de la implementación de JVM, por lo que no es muy fácil averiguar qué está sucediendo realmente con el bytecode cuando se está convirtiendo al código nativo, y además, no podemos decir qué partes están siendo JITted (al menos no sin algunas herramientas específicas de JVM para ver qué tipo de compilación JIT se está realizando - No conozco ningún detalle en esta área, así que solo estoy especulando).
Dicho esto, la JVM va a ejecutar el bytecode de todos modos, la forma en que se ejecuta es más o menos opaca para el desarrollador, y de nuevo, específica de JVM. Puede haber algunos trucos de rendimiento que realiza una JVM mientras que otro no.
Cuando se trata del tema de mirar el bytecode generado, todo se reduce a aprender lo que realmente está sucediendo con el código fuente cuando se compila en bytecode. Poder ver los tipos de optimizaciones realizadas por el compilador, pero también comprender que existen límites en la forma en que el compilador puede realizar optimizaciones.
Dicho todo esto, no creo que sea una buena idea obsesionarse con la generación de códigos de bytes y tratar de escribir programas que emitan el bytecode más optimizado. Lo que es más importante es escribir código fuente de Java legible y mantenible por otros.
Pero Cole Trickle se convirtió en un mejor conductor una vez que se enteró de las partes internas del automóvil. – Boune