2009-07-22 10 views
68

Visual Studio creará automáticamente instrucciones using para usted siempre que cree una nueva página o proyecto. Algunos de estos nunca los usarás.¿Cómo se ve afectado el rendimiento por una directiva de uso no utilizada?

Visual Studio tiene la característica útil para "eliminar usos no utilizados".

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

+0

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

+5

FWIW, esta publicación tiene un 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 diferente para agregar valor a esta publicación, aunque solo sea como una redirección. – DaveD

Respuesta

86

Un uso no utilizado no tiene ningún impacto en el rendimiento del 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 nombre adicional en el que debe ocurrir la resolución del nombre. Sin embargo, estos tienden a ser menores y no deberían tener un impacto notable en su experiencia IDE para 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.

+21

Cuantos más usos haya, más lento será el Intellisense – Heliac

11

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

+1

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

5

Sin efecto en la velocidad de ejecución, pero puede haber un ligero efecto en 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 al respecto, pero puede usar el elemento de menú Organizar usos para eliminar y ordenar las instrucciones de uso.

4

No, hay varios procesos involucrados al compilar un programa. Cuando el compilador comienza 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 de uso no utilizadas podría tener un problema de rendimiento, pero solo en tiempo de compilación. En tiempo de ejecución, todo el código externo está correctamente vinculado o incluido como parte del binario.

5

El código que no se ejecuta no afecta el rendimiento de un programa.

1

El siguiente enlace A good read on why to remove unused references explica cómo es útil eliminar las referencias no utilizadas de la aplicación.

debajo son las algunos extractos del enlace:

  1. , eliminando las referencias utilizadas en su aplicación, usted es la prevención de la CLR de la carga de los módulos que se hace referencia no utilizadas al tiempo de ejecución. Lo que significa que reducirá el tiempo de inicio de su aplicación , ya que lleva tiempo cargar cada módulo y evita que tenga metadatos de carga del compilador que nunca se utilizarán. Puede encontrar que dependiendo del tamaño de cada biblioteca, su tiempo de inicio se reduce notablemente. Esto no quiere decir que su aplicación será más rápida una vez cargada, pero puede ser muy útil saber que su tiempo de inicio de podría reducirse.

  2. Otro beneficio de eliminar las referencias no utilizadas es que reduce el riesgo de conflictos con los espacios de nombres. Por ejemplo, si tiene tiene System.Drawing y System.Web.UI.WebControls referenciados, , puede encontrar conflictos al intentar hacer referencia a la clase Image.Si tiene directivas en su clase que coinciden con estas referencias, el compilador no puede decir cuál de las que debe usar. Si utiliza el autocompletar de forma regular al desarrollar, la eliminación de los espacios de nombres no utilizados reducirá el número de valores de autocompletado en su editor de texto mientras escribe.

Cuestiones relacionadas