fbpx
Wikipedia

Eliminación de código muerto

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]

Algoritmos

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.[4]​ Luego se publicó un artículo donde se mostraba esta técnica mediante static single assignment form.[5]​ Más tarde se mejoró el algoritmo removiendo las operaciones de flujo de control innecesarias.[6]

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

  1. . Archivado desde el original el 20 de julio de 2013. Consultado el 17 de enero de 2013. 
  2. . Archivado desde el original el 2 de enero de 2010. Consultado el 17 de enero de 2013. 
  3. Hongwei. «Page 1 Dead Code Elimination throughDependent Types» (en inglés). Consultado el 17 de enero de 2013. 
  4. Ken Kennedy. A Survey of Data-flow Analysis Techniques. In Program Flow Analysis, Muchnick and Jones (editors), Prentice-Hall, 1981.
  5. Ron Cytron, Jeanne Ferrante, Barry Rosen, and Ken Zadeck. Efficiently Computing Static Single Assignment Form and the Program Dependence Graph. ACM TOPLAS 13(4), 1991.
  6. Keith D. Cooper and Linda Torczon, Engineering a Compiler, Morgan Kaufmann, 2003, pages 498ff.

Bibliografía

  • Aho, Alfred V.; Sethi, Ravi; Ullman, Jeffrey D. (1986). Compilers - Principles, Techniques and Tools. Addison Wesley Publishing Company. ISBN 0-201-10194-7. 
  • Muchnick, Steven S. (1997). Advanced Compiler Design and Implementation. Morgan Kaufmann Publishers. ISBN 1-55860-320-4. 
  • Grune, Dick; Bal, Henri E.; Jacobs, Ceriel J.H.; Langendoen, Koen G. (2000). Modern Compiler Design. John Wiley & Sons, Inc. ISBN 0-471-97697-0. 

Enlaces externos

  • Algoritmos de eliminación de código muerto
  • Algoritmos de eliminación de código muerto
  •   Datos: Q1143090

eliminación, código, muerto, programación, eliminación, código, muerto, técnica, optimización, software, comúnmente, llevada, cabo, forma, automática, compilador, optimizador, consta, eliminar, cualquier, tipo, código, muerto, código, inalcanzable, código, red. En programacion la eliminacion de codigo muerto es una tecnica de optimizacion de software comunmente llevada a cabo de forma automatica por un compilador optimizador que consta en eliminar cualquier tipo de codigo muerto codigo inalcanzable codigo redundante y almacenamiento muerto 1 2 Resulta importante eliminar este tipo de codigo por varias razones entre las que se enumeran ahorrar tiempo de computo innecesario evitar accesos a memoria innecesarios y ejecutar codigo que no se utilice ya que puede arrojar excepciones 3 Indice 1 Algoritmos 2 Ejemplo 3 Vease tambien 4 Referencias 5 Bibliografia 6 Enlaces externosAlgoritmos EditarHistoricamente la eliminacion de codigo muerto fue llevada a cabo mediante la informacion que se obtiene de un analisis de flujo de datos 4 Luego se publico un articulo donde se mostraba esta tecnica mediante static single assignment form 5 Mas tarde se mejoro el algoritmo removiendo las operaciones de flujo de control innecesarias 6 Ejemplo EditarSuponiendo el siguiente trozo de codigo int foo int a 24 int b 25 almacenamiento muerto int c a lt lt 2 if true codigo muerto c a lt lt 2 codigo redundante return c b 24 codigo inalcanzable Dado que presenta varios errores una eliminacion de codigo muerto deberia de dejar el codigo de la siguiente manera int foo int a 24 int c a lt lt 2 return c Dependiendo de que algoritmo se uso y de que forma se realice el codigo resultante puede variar Utilizando otras tecnicas de optimizacion como el plegamiento de constantes y la propagacion de constantes de forma exhaustiva el codigo se podria llegar a reducir a lo siguiente int foo return 24 lt lt 2 O dependiendo del plegamiento y otras tecnicas de optimizacion se podria calcular 24 lt lt 2 e incluso eliminar la funcion y reemplazar cada llamada a la misma por ese valor Vease tambien EditarCompilador optimizador Codigo muerto Codigo inalcanzable Codigo redundante Almacenamiento muertoReferencias Editar Codigo muerto Archivado desde el original el 20 de julio de 2013 Consultado el 17 de enero de 2013 FUNDAMENTOS DE OPTIMIZACIoN Archivado desde el original el 2 de enero de 2010 Consultado el 17 de enero de 2013 Hongwei Page 1 Dead Code Elimination throughDependent Types en ingles Consultado el 17 de enero de 2013 Ken Kennedy A Survey of Data flow Analysis Techniques In Program Flow Analysis Muchnick and Jones editors Prentice Hall 1981 Ron Cytron Jeanne Ferrante Barry Rosen and Ken Zadeck Efficiently Computing Static Single Assignment Form and the Program Dependence Graph ACM TOPLAS 13 4 1991 Keith D Cooper and Linda Torczon Engineering a Compiler Morgan Kaufmann 2003 pages 498ff Bibliografia EditarAho Alfred V Sethi Ravi Ullman Jeffrey D 1986 Compilers Principles Techniques and Tools Addison Wesley Publishing Company ISBN 0 201 10194 7 Muchnick Steven S 1997 Advanced Compiler Design and Implementation Morgan Kaufmann Publishers ISBN 1 55860 320 4 Grune Dick Bal Henri E Jacobs Ceriel J H Langendoen Koen G 2000 Modern Compiler Design John Wiley amp Sons Inc ISBN 0 471 97697 0 Enlaces externos EditarAlgoritmos de eliminacion de codigo muerto Algoritmos de eliminacion de codigo muerto Dead code elimination Datos Q1143090Obtenido de https es wikipedia org w index php title Eliminacion de codigo muerto amp oldid 125249014, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos