Optimizacion de Codigo
Unidad 3. Optimización
Unidad 3. Optimización
3.1.1 Locales
Reacondicionamiento de operadores
Cambiar orden de evaluación aplicando propiedades conmutativa,asociativa y
distributiva.
V:= W * X *( Y + Z )
=
V := ( Y + Z ) * W * X
Código no optimizado, con 7 líneas de código.
1. MOV AX, W
2. MUL AX, X
3. MOV t1, AX
4. MOV AX, Y
5. ADD AX, Z
6. MULAX, t1
7. MOV V, AX
Código optimizado a solo 5 líneas de código.
1.
2.
3.
4.
5.
MOV AX, Y
ADD AX, Z
MUL AX, W
MUL AX, X
MOV V, AX
3.1.2 Ciclos
Factorización de expresiones invariantesExpresiones invariantes de bucle: expresiones cuyo valor es constante durante toda la
ejecución del bucle
>
incuyen constantes y/o variables no modi_cadas en el cuerpo del bucle
Principio:Mover expresiones invariantes desde el cuerpo hasta la cabeza del bucle
-> al sacarlas del bucle, pueden quedar dentro de otro bucle externo)
-> repetir proceso.
Ejemplos:
while (i
>
Algunasoptimizaciones son difíciles de implementar
Algunas optimizaciones son costosas en términos de tiempo de compilación
La optimización más elaborada es difícil y costosa
Meta: Mejora Máxima concosto mínimo
Los costos son el factor más 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
serperjudicial para el equipo de desarrollo.
La optimización de una pequeña mejora tal vez tenga una pequeña ganancia en tiempo
o en espacio pero sale muy costosa en tiempo en generarla.
Pero en cambio siesa optimización se hace por ejemplo en un ciclo, la mejora obtenida
puede ser N veces mayor por lo cual el costo se minimiza y es benéfico la mejora.
Por ejemplo: for(int i=0; i < 10000; i++); si laganancia es de 30 ms 300s
3.2.1 Costo de ejecución
•
Los costos de ejecución son aquellos que vienen implícitos al ejecutar el
programa.
•
En algunos programas se tiene un mínimo para...
Regístrate para leer el documento completo.