¿Cómo se ve afectado el rendimiento por una directiva using no utilizada?


110

Visual Studio creará automáticamente declaraciones using para usted cada vez que cree una nueva página o proyecto. Algunos de estos nunca los usará.

Visual Studio tiene la función útil de "eliminar los usos no utilizados".

Me pregunto si hay algún efecto negativo en el rendimiento del programa si las declaraciones de uso a las que nunca se accede, permanecen mencionadas en la parte superior del archivo.


Lo busqué antes de preguntar y no apareció.
KdgDev

6
FWIW, esta publicación tiene mejor SEO: fue el primer resultado en Google para mí. De los 2 originales vinculados, uno no está disponible (eliminado) y el otro está redactado de manera lo suficientemente diferente como para agregar algo de valor a esta publicación, incluso si solo es una redirección.
DaveD

@DaveD primero para usted porque Google conoce sus preferencias exactas y su historial de búsqueda. En la computadora de mi amigo no fue el primero.
ilias iliadis

Respuestas:


133

Un uso no utilizado no tiene ningún impacto en el rendimiento en tiempo de ejecución de su aplicación.

Puede afectar el rendimiento del IDE y la fase de compilación general. La razón es que crea un espacio de nombres adicional en el que debe ocurrir la resolución de nombres. Sin embargo, estos tienden a ser menores y no deberían tener un impacto notable en su experiencia con IDE en la mayoría de los escenarios.

También puede afectar el rendimiento de la evaluación de expresiones en el depurador por las mismas razones.


38
Cuantos más usos haya, más lento será Intellisense
Riegardt Steyn

14

No, es solo una cuestión de estilo de codificación / tiempo de compilación. Los binarios .NET usan nombres completamente calificados bajo el capó.


3
¿Significa esto que los nombres más largos de clases y métodos tienen un impacto pequeño pero real (aunque inconmensurable) en los tiempos de compilación JIT?
Jared Updike

8

No hay efecto sobre la velocidad de ejecución, pero puede haber un ligero efecto sobre la velocidad de compilación / intellisense ya que hay más espacios de nombres potenciales para buscar la clase adecuada. No me preocuparía demasiado por eso, pero puede usar el elemento de menú Organizar usos para eliminar y ordenar las declaraciones de uso.


8

El siguiente enlace Una buena lectura sobre por qué eliminar las referencias no utilizadas explica cómo puede ser útil eliminar las referencias no utilizadas de la aplicación.

A continuación se muestran algunos extractos del enlace:

  1. Al eliminar las referencias no utilizadas en su aplicación, evita que CLRcargue los módulos referenciados no utilizados en tiempo de ejecución. Lo que significa que reducirás el tiempo de inicio de tu aplicación, porque lleva tiempo cargar cada módulo y evita que el compilador cargue metadatos que nunca serán usados. Es posible que, según el tamaño de cada biblioteca, el tiempo de inicio se reduzca notablemente. Esto no quiere decir que su aplicación sea más rápida una vez cargada, pero puede ser muy útil saber que su tiempo de inicio podría reducirse.

  2. Otro beneficio de eliminar las referencias no utilizadas es que reducirá el riesgo de conflictos con los espacios de nombres. Por ejemplo, si ha hecho referencia a ambos System.Drawingy System.Web.UI.WebControls, es posible que tenga conflictos al intentar hacer referencia a la Imageclase. Si tiene directivas de uso en su clase que coinciden con estas referencias, el compilador no puede decir cuál de las que debe usar. Si utiliza la función de autocompletar con regularidad al desarrollar, la eliminación de los espacios de nombres no utilizados reducirá la cantidad de valores de autocompletado en su editor de texto a medida que escribe.


5

No, hay varios procesos involucrados al compilar un programa. Cuando el compilador comience a buscar referencias (clases, métodos), usará solo las que se usan en el código. La directiva using solo le dice al compilador dónde buscar. Una gran cantidad de instrucciones using no utilizadas podría tener un problema de rendimiento, pero solo en el momento de la compilación. En tiempo de ejecución, todo el código externo está correctamente vinculado o incluido como parte del binario.


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.