La optimización global se da con respecto a
todo el código.Este tipo de optimización es más lenta pero
mejora el desempeño general de todo
programa.
Las optimizaciones globales pueden
depender de la arquitectura de la máquina.
Funcionamiento
Revisa el código generado a varios niveles de abstracción y realiza las optimizaciones aplicables al nivel de abstracción
Representaciones de código para extraer información de grafos.
Hay que buscar transformaciones que no modifiquen el comportamiento del código según el comportamiento definido para el lenguaje de programación.
Obtener código que se ejecuta más eficientemente según los criterios
• Tiempo de ejecución (optimización temporal)
• Espacio de memoria utilizado(optimización espacial)
Condiciones que se deben de cumplir
El código optimizado se ha de comportar igual que el código de partida excepto por ser más rápido o ocupar menos espacio.Hay que buscar transformaciones que no modifiquen el comportamiento del código según el comportamiento definido para el lenguaje de programación.
EJEMPLO
Si no se ha definido el orden de evaluación de los operandos la siguiente optimización es válida.
B=2*A+(A=c*d);
Pasar a
A=c*d;
B=A*3;
Objetivo
Obtener código que se ejecuta más eficientemente según los criterios
• Tiempo de ejecución (optimización temporal)
• Espacio de memoria utilizado(optimización espacial)
En algunos casos es mejor mantener
variables globales para agilizar los procesos
(el proceso de declarar variables y
eliminarlas toma su tiempo) pero consume
más memoria.
Saúl Santiago Hernandez
Referencia: Aho(2006),et. al. Compiladores:Principios y Técnicas. Segunda Edición.
No hay comentarios.:
Publicar un comentario