Académique Documents
Professionnel Documents
Culture Documents
Introduccion
La finalidad de la optimizacin de cdigo es producir un
cdigo objeto lo ms eficiente posible. En algunos casos
tambin se realiza una optimizacin del cdigo intermedio.
Algunas optimizaciones que se pueden realizar son la
evaluacin de expresiones constantes, el uso de ciertas
propiedades de los operadores, tales como la asociativa,
conmutativa, y distributiva; as como la reduccin de
expresiones comunes
Objetivo
Obtener cdigo que se ejecuta ms eficientemente segn los
Criterios
Funcionamiento
Revisa el cdigo generado a varios niveles de abstraccin y
realiza las optimizaciones aplicables al nivel de abstraccin.
Tuplas
Ensamblador/Cdigo
Condiciones
En funcin de
dependencia
Dependientes
de la maquina
Independientes
de la maquina
optimizacin
En funcin
mbito
aplicacin
Optimizacin
locales
Optimizacin
global
Optimizaciones locales
1.
j=4
f = j + 2.5
i=5
j=4
f=6.5
a= b+ c
d =a-d
d = a-d
e = b+c
f = a-d
e=a
f=a-d
3. Propagacin de copias
Antes de sustituir f =a, sustituir todos los usos de f por a
a=3+i
f=a
a= 3 + i
b = f+c
b=a+c
d = a+ m
d=a+m
m = f+d
m=a+ d
Sin optimizacion:
Con optimizacion:
5. Transformaciones algebraicas
Aplicar propiedades matemticas para simplificar expresiones
a) Eliminacin secuencias nulas
x+0x
1*xx
x / 1 x
...
b) Reduccin de potencia
Reemplazar una operacin por otra equivalente menos costosa
x2
2*x
x*x
x + x (suma); x<<1 (despl. izq.)
4*x, 8*x,...
x<<2, x<<3,...
x/2
x>>2
c) Reacondicionamiento de operadores
Cambiar orden de evaluacin aplicando propiedades conmut.,
asociativa y distributiva
A := B*C*(D + E)
A := (D + E)*B*C
MOV B,R0
MUL C,R0
MOV D,R0
MOV R0, t1
ADD E, R0
MOV D,R0
MUL B,R0
5 instrucciones
ADD E,R0
MUL C,R0
0 temporales
MUL t1,R0
MOV R0,A
MOV R0,A
Optimizacion mirilla
Idea Bsica
Ejemplos:
MOV Ri, Rj
Reduccion de potencia
if C goto L1
L1: goto L2
if C goto L2
__________________________________________________________________
if C goto L1
goto FIN
L1: ...
...
FIN:
FIN:
Optimizaciones globales
Optimizaciones entre Bloques Bsicos
Optimizaciones tpicas:
Optimizacin de bucle
Mejoras
Expansin en lnea
Limitaciones
Ejemplos
Optimizacin de Bucles
Idea: Centrar optimizacin en partes mas usadas, no en todo
el programa
Optimizar bucles internos
Mejoras:
Costos
Los costos son el factor ms importante a tomar en
cuenta a la hora de optimizar ya que en ocasiones la
mejora obtenida puede verse no reflejada en el
programa final pero si ser perjudicial para el equipo
de desarrollo.
Costos de ejecucin