Eliminación de código muerto

From Wikipedia, the free encyclopedia

En programación, la eliminación de código muerto es una técnica de optimización de software comúnmente llevada a cabo de forma automática por un compilador optimizador que consta en eliminar cualquier tipo de código muerto, código inalcanzable, código redundante y almacenamiento muerto.[1][2] Resulta importante eliminar este tipo de código por varias razones entre las que se enumeran: ahorrar tiempo de cómputo innecesario, evitar accesos a memoria innecesarios y ejecutar código que no se utilice ya que puede arrojar excepciones.[3]

La eliminación del código inactivo puede reducir el tiempo de procesamiento y carga, y puede conducir a una reducción en el uso de recursos, como la cantidad de bytes transferidos.[4]

Históricamente la eliminación de código muerto fue llevada a cabo mediante la información que se obtiene de un análisis de flujo de datos.[5] Luego se publicó un artículo donde se mostraba esta técnica mediante static single assignment form.[6] Más tarde se mejoró el algoritmo removiendo las operaciones de flujo de control innecesarias.[7]

Ejemplo

Suponiendo el siguiente trozo de código:

int foo() {
   int a = 24;
   int b = 25; // almacenamiento muerto
   int c = a << 2;
   if (true) //código muerto
       c = a << 2; //código redundante
   return c;
   b = 24; // código inalcanzable
}

Dado que presenta varios errores una eliminación de código muerto debería de dejar el código de la siguiente manera:

int foo() {
   int a = 24;
   int c = a << 2;
   return c;
}

Dependiendo de que algoritmo se usó y de que forma se realice el código resultante puede variar. Utilizando otras técnicas de optimización como el plegamiento de constantes y la propagación de constantes de forma exhaustiva el código se podría llegar a reducir a lo siguiente:

int foo() {
   return 24 << 2;
}

O dependiendo del plegamiento y otras técnicas de optimización se podría calcular 24<<2 e incluso eliminar la función y reemplazar cada llamada a la misma, por ese valor.

Véase también

Referencias

Bibliografía

Enlaces externos

Related Articles

Wikiwand AI