Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

486
Visualizações
Eficiencia de variables temporales (por ejemplo, java)

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. ingrese la descripción de la imagen aquí segundo ingrese la descripción de la imagen aquí

Entonces, esto significa que la PC tiene que hacer una o más instrucciones para realizar la ejecución, ¿verdad?

saludos nur1

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

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.

over 4 years ago · Santiago Trujillo Relatório

0

No, después de la compilación JIT, todo es lo mismo, sin importar si usó una variable temporal o la asignó directamente

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda