Código muerto
El término código muerto tiene múltiples definiciones. Algunos usan el término para referirse al código (es decir, instrucciones en la memoria) que nunca se puede ejecutar en tiempo de ejecución. En algunas áreas de la programación informática, código muerto es una sección del código fuente de un programa que se ejecuta pero cuyo resultado nunca se utiliza en ningún otro cálculo. La ejecución de código muerto desperdicia tiempo de cálculo y memoria.
Si bien es posible que nunca se use el resultado de un cálculo inactivo, puede generar excepciones o afectar algún estado global, por lo que la eliminación de dicho código puede cambiar la salida del programa e introducir errores no deseados. Las optimizaciones del compilador suelen ser conservadoras en su enfoque de la eliminación del código muerto si existe alguna ambigüedad en cuanto a si la eliminación del código muerto afectará la salida del programa. El programador puede ayudar al compilador en este asunto haciendo un uso adicional de las funciones estáticas y/o en línea y habilitando el uso de la optimización del tiempo de enlace.
Ejemplo
int Foo ()int iX, int i){}int iZ = iX/i;retorno iX*i;}
En el ejemplo anterior, aunque la división de iX por iY se calcula y nunca se usa, generará una excepción cuando se produce una división por cero. Por lo tanto, la eliminación del código muerto puede cambiar la salida del programa.
Análisis
La eliminación de código inactivo es una forma de optimización del compilador en la que el código inactivo se elimina de un programa. El análisis de código muerto se puede realizar mediante el análisis de variables en vivo, una forma de análisis de código estático y análisis de flujo de datos. Esto contrasta con el análisis de código inalcanzable que se basa en el análisis de flujo de control.
La técnica de eliminación de código muerto se encuentra en la misma clase de optimizaciones que la eliminación de código inalcanzable y la eliminación de código redundante.
En grandes proyectos de programación, a veces es difícil reconocer y eliminar el código inactivo, especialmente cuando módulos completos quedan inactivos. El andamiaje de prueba puede hacer que parezca que el código aún está vivo y, a veces, el lenguaje del contrato puede requerir la entrega del código incluso cuando el código ya no es relevante.
Algunos IDE (como Xcode, Visual Studio 2010 y Eclipse Galileo) tienen la capacidad de localizar código inactivo durante la etapa de compilación.
Si bien la mayoría de las técnicas de optimización buscan eliminar el código muerto en una implementación, en formas extremas de optimización del tamaño, a veces puede ser deseable introducir deliberadamente y dar forma cuidadosamente a código aparentemente muerto, cuando permite juntar secciones de código que de otro modo no estarían relacionadas (y reducir así su tamaño combinado) para que el código adicional no dañe la primera ruta de ejecución a través del código, sino que se utilice para llevar a cabo las acciones necesarias para las rutas alternativas de ejecución, para las cuales otras secciones del código pueden convertirse en código muerto.. En un nivel más funcional, esto puede verse como la introducción artificial de efectos secundarios inofensivos/útiles y la reducción de la redundancia del código, pero también puede usarse hasta el nivel del código de operación para permitir el uso de instrucciones más cortas., que no sería posible al doblar secuencias de código sin la introducción concertada de efectos secundarios causados por el código muerto.
Contenido relacionado
Formato de archivo de audio
Efecto secundario (informática)
Microsoft Excel