Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

488
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!