31 votos

Será el compilador sólo compilar código que puede ejecutar?

Tengo una biblioteca de clases y estoy usando sólo una parte de ella. Existe una necesidad de eliminar lo que no está siendo utilizada para reducir el tamaño del código creado (en la configuración de lanzamiento?

Como he visto, el compilador se encarga de eso, y eliminando el código no cambia el archivo EXE tamaño. Será este ser siempre verdadera? La eliminación de todos los innecesarios código llevaría mucho tiempo, así que quiero saber si hay necesidad de eso.

Más información: existen métodos y clases en la biblioteca de clases que no son llamados a partir de la ejecución de código, sino que se hace referencia en otras partes de código en la biblioteca de clase (que de por sí nunca se denominan).

29voto

Tim S. Puntos 30377

No, el compilador incluye el "muerto" de código. Una simple razón de esto es que no siempre es posible saber exactamente cuál es el código será y no será ejecutado. Por ejemplo, incluso un método privado que nunca se hace referencia podría ser llamado a través de la reflexión y métodos públicos podría ser referenciada por ensamblados externos.

Usted puede utilizar una herramienta para ayudarle a encontrar y quitar sin utilizar métodos (incluyendo sólo a los llamados por otros sin usar métodos). Trate de Qué herramientas y técnicas que utiliza para encontrar código muerto .NETA? y Encontrar el código no utilizado para empezar.

5voto

nmaait Puntos 1081

Todo se compila. Independientemente de si se llama o no. El código puede ser llamado por una biblioteca externa.

La única manera de hacer que el compilador ignora código es mediante el uso de las Directivas de Preprocesador del Compilador. Más acerca de ellos aquí.

0voto

Nicolas Repiquet Puntos 4411

Dudo que el compilador va a quitar nada. El hecho es que el compilador no puede saber lo que se usa y lo que no lo es, como los tipos se pueden crear instancias y métodos llamados por su nombre, gracias a la reflexión.

0voto

Abdul Muqtadir Puntos 3887

Supongamos que hay una biblioteca de clase llamado Utility. Creó un nuevo proyecto, y añadió esta biblioteca de clases para el proyecto. Incluso si el archivo EXE llamadas de sólo 1-2 métodos de la biblioteca de la clase, nunca es una buena idea para eliminar el sin referencia código.

Sería ir contra el principio de reusablity. A pesar del hecho de que hay algunas clases presentes en la biblioteca sin referencia desde el EXE, no tendría ningún impacto negativo sobre el rendimiento o el tamaño del programa.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X