Documentos de Académico
Documentos de Profesional
Documentos de Cultura
JP12 - Optimizacion
JP12 - Optimizacion
Es el proceso en el cual se revisa el código intermedio generado para encontrar todo lo que sea
redundante y superfluo, para luego eliminarlo consiguiendo entonces una reducción del tamaño
del código objeto, esto con la finalidad de reducir el tiempo de ejecución.
P1.cpp --- > Analisis --- > Generacion Codigo Intermedio --- > Optimizacion --- > P1.exe
1. Precio
2. IDE + facilidad de uso
3. Tamaño del código objeto generado
4. Tiempo de compilación (hay que considerar que el tiempo de optimización se suma al de
compilacion)
Observacion: La optimización se realiza mejor sobre el código intermedio porque este esta
estructurado de forma homogénea y simple.
Criterios de Optimizacion
1. Instrucciones inaccesibles
Instrucciones que nunca se van a ejecutar porque de alguna manera no se puede llegar a ese
código.
goto E1
<codigo1> // Inaccesible
E2: <codigo2>
E1: <codigo3>
2. Codigo/Operaciones redundante
Es aquel código u operación que se ejecuta pero el resultado de su acción no cambia nada.
a = a * 1;
b = b + 0;
nop // redundante, a menos que este siendo referenciado por un goto
3. Saltos redundantes
goto E1 === > goto E2
<codigo1>
E1: goto E2
No se reduce el tamaño del código, pero si se reduce el tiempo de ejecución (un salto toma la
mitad de tiempo que dos saltos)
4. Operaciones equivalentes
a=a+1; ==== > a++;
a = a * 2; ===> shl a, 1 // desplazamiento binario de a una posición a la izquierda
implementando: evaluar(x)
if FALSO goto E1
evaluar(<expresion>)
E1:
Ejm.
while () { while (…) {
if ( E1 && E2) ===> if( E1 )
<codigo> if (E2)
} <codigo>
}
6. Otros criterios a revisar
Observacion: Los compiladores modernos utilizan mas tiempo en la optimización que en el simple
análisis léxico/sintáctico, los cuales ya han sido llevados a su forma mas eficiente.
MANEJO DE ERRORES
Pasos necesarios:
1. Deteccion.
Hay errores reales y errores falsos o derivados.
inta =1; // Error inta no declarado
a++; // Error a no declarado
3. Informe
Detallado, especificando tipo de error, nro de línea, posible corrección
Ejemplos de Errores:
- Type mismatched
- Missing ‘(‘
- not declared variable
- Numero de parámetros no coincide
- Index out of range
- Null pointer
-