¿La importación y los objetos no utilizados tienen un impacto en el rendimiento?

5 minutos de lectura

Avatar de usuario de Dheeraj Joshi
Dheeraj Joshi

¿Las importaciones no utilizadas y los objetos no utilizados en el código Java generan algún impacto en el rendimiento?

Supongamos que un objeto se inicializa y nunca se usa, ¿qué sucede? ¿Y cuál es el costo de las importaciones no utilizadas?

  • stackoverflow.com/questions/979057/…

    – Trigo Mitch

    4 de enero de 2012 a las 8:39

  • ¿Por qué no usar Eclipse? Organize Imports ¿función?

    – juergen d

    4 de enero de 2012 a las 8:40

  • O Organizar importaciones en IntelliJ o NetBeans o cualquier IDE decente.

    – Peter Lawrey

    4 de enero de 2012 a las 8:41

  • Seguro que hay un impacto en la gestión del código 🙂

    – desorden

    4 de enero de 2012 a las 8:41

  • Posible duplicado de ¿Alguna razón para limpiar las importaciones no utilizadas en Java, además de reducir el desorden?

    – jonayreyes

    16 de enero de 2017 a las 10:43

Es una pregunta muy común.

Como la mayoría de las preguntas de rendimiento, el mejor enfoque es escribir el código más claro y simple que pueda, ya que esto mejora la capacidad de mantenimiento del código y ayuda a garantizar que funcione razonablemente bien incluso después de que se modifique. (El código inteligente/obtuso/innecesariamente detallado puede ejecutarse rápido al principio, pero a medida que lo modifican los simples mortales, puede volverse mucho más lento)

Las importaciones no utilizadas tienen un impacto trivial en el compilador, pero no hay importaciones en el código de bytes o en tiempo de ejecución.

Los objetos no utilizados se pueden optimizar, pero es mejor evitarlos, ya que casi siempre causan algún impacto en el rendimiento, pero lo que es más importante, dificultan la lectura y el mantenimiento de su código.

  • También podemos mencionar algunos pasos de CPU adicionales en el proceso de compilación. Más código: más tiempo para optimizar y compilar

    – desorden

    4 de enero de 2012 a las 8:46


  • ¡Gracias por la respuesta! ¿Tiene una fuente para esta información a la que pueda hacer referencia? (aparte de esta respuesta…)

    –Eduardo Bezerra

    27/09/2016 a las 16:24

  • @EduardoBezerra puede ver en la especificación de byte cide que las importaciones no se usan para que puedan tener un efecto en el tiempo de ejecución.

    – Peter Lawrey

    27/09/2016 a las 19:02

Avatar de usuario de Frankline
franklin

Las importaciones no utilizadas no tienen impacto en el rendimiento en tiempo de ejecución. Es puramente un mecanismo de espacio de nombres. No obstante, siempre debe importar solo lo que necesita para la legibilidad y evitar colisiones de espacios de nombres que son una molestia.

Además de la legibilidad del código y, por lo tanto, la capacidad de mantenimiento del código, puede haber una compilación más rápida del código Java (sin embargo, imperceptible) al ordenar las importaciones, pero el rendimiento del tiempo de ejecución no se ve afectado, ya que el código de bytes generado no se ve afectado por las importaciones desordenadas. El código de bytes generado sigue siendo el mismo.

  • Proporcione una referencia para unused imports have no performance impact

    – RanRag

    4 de enero de 2012 a las 8:52

  • Para ser más precisos, no hay impacto en el rendimiento en RUNTIME. Sin embargo, dependiendo del número de importaciones, la COMPILACIÓN puede ser más lenta, aunque imperceptible.

    – Frankline

    12 de enero de 2012 a las 12:42

  • ¿Por qué imperceptible? Seguramente eso depende de cuántas compilaciones estés haciendo. Por ejemplo, tenemos un servidor de compilación de CI que compila continuamente varios proyectos; por lo tanto, incluso la optimización más pequeña debería aumentar ligeramente el rendimiento de la compilación, ¿verdad?

    – Ryan

    5 de junio de 2013 a las 12:40

  • Si algo tarda un día más de lo habitual, lo notará… suponiendo que sea algo que normalmente tardaría menos de unos pocos días. ¿Qué pasa si normalmente toma un año? No lo vas a notar porque es solo ruido de esa magnitud. Hay cosas más gratificantes en las que concentrarse que un aumento del rendimiento del 0,274 %. Si realmente necesita ese pequeño aumento, lanzarle un mejor hardware o mejorar el compilador, obtendrá mucho más de eso que ir tras el cambio de bolsillo.

    – Chinoto Vokro

    17 de diciembre de 2016 a las 8:33

  • @SantiBailors “un día entero” ¿de qué? Ese día lo pasa la computadora, no tú. Una computadora no puede corregir errores (¿a menos que esté programada para hacerlo?), de lo contrario, no sería necesario. Un cambio que gana 1/1000 dentro de un ciclo de iteración de 1000 sigue siendo solo una ganancia de 1/1000, no veo tu punto. Si alguien quiere pagarte por una ganancia tan pequeña, eso es genial para ti, de lo contrario es una pérdida de tiempo.

    – Chinoto Vokro

    6 de agosto de 2018 a las 15:58

Avatar de usuario de Ossama Boughaba
Ossama Boughaba

Si bien el impacto en la compilación es mínimo, el impacto en la implementación puede ser malo. Acabo de encontrar una importación no utilizada que requería una biblioteca separada que se convirtió en una dependencia experta. Afortunadamente, no se encontró otro problema de dependencia transitiva, pero el .war el archivo era más grueso sin ninguna razón. Agregue a eso un jar superfluo en el cargador de clases de la aplicación web.

avatar de usuario de asem shawkey
asem shawkey

Aunque las importaciones no utilizadas en el archivo Java no crean ningún daño, aumentan innecesariamente la longitud y el tamaño del archivo fuente Java.

Sí, afecta un poco el rendimiento, si nos referimos a una declaración de importación no utilizada en nuestra clase Java. El compilador de Java verificará las referencias mencionadas en la declaración de importación y, a nivel de minuto, afectará el rendimiento de su clase.

Gracias

¿Ha sido útil esta solución?