Me preguntaba si hay una diferencia en la eficiencia o el rendimiento cuando se trabaja con variables temporales dentro de constructores o métodos.
Aquí hay un ejemplo
// Get bufferedImage BufferedImage trayIconImage = ImageIO.read(getClass().getResource("/images/D.gif")); // Calculate width int trayIconWidth = new TrayIcon(trayIconImage).getSize().width; // Create TrayIcon TrayIcon trayIcon = new TrayIcon(trayIconImage.getScaledInstance(trayIconWidth, -1, Image.SCALE_SMOOTH));Entonces tengo una variable temporal "trayIconWidth"
Pero también podría hacer esto así:
//Get bufferedImage BufferedImage trayIconImage = ImageIO.read(getClass().getResource("/images/D.gif")); // Create TrayIcon TrayIcon trayIcon = new TrayIcon(trayIconImage.getScaledInstance(new TrayIcon(trayIconImage).getSize().width, -1, Image.SCALE_SMOOTH));Básicamente, me estoy saltando el paso de obtener el valor int para el ancho.
Hay muchos ejemplos en los que puede omitir múltiples variables temporales y sé que tiene que ver con la legibilidad y esas cosas. Pero me gustaría saber si hay alguna diferencia en la velocidad, el rendimiento, la eficiencia o el uso de RAM.
¿El recolector de basura (por ejemplo, Java) maneja este tipo de acción temporal?
EDITAR 1:
Comparé el código de bytes de dos fragmentos básicos. Ellos son diferentes.
segundo 
Entonces, esto significa que la PC tiene que hacer una o más instrucciones para realizar la ejecución, ¿verdad?
saludos nur1
El código de bytes va a ser diferente, sí. En el caso de que use ese String s = "Hello World" , habrá dos instrucciones de bytecode más: astore_1 y aload_1 , para almacenar en s y luego leer de s .
Pero eso sucede solo en el nivel de código de bytes. Aunque no es necesario para s en absoluto, javac no hace ninguna optimización (o mejor dicho, hace muy, muy poco) y no lo elimina. Es deber de JIT hacer esto, y la eliminación de s locales es trivial para hacerlo. Entonces, si bien la idea es correcta de que "hay más trabajo por hacer" con la segunda versión, este "más" ni siquiera se puede medir por lo pequeño que es. Es como tomar una taza de agua caliente en Siberia en diciembre y decir que la temperatura exterior ha cambiado debido a esa taza de agua caliente. Sí, seguro que cambió, pero eso es imposiblemente pequeño de medir.
No, después de la compilación JIT, todo es lo mismo, sin importar si usó una variable temporal o la asignó directamente