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. MUL AX, 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 invariantes
Expresiones invariantes de bucle: expresiones cuyo valor es constante durante toda la ejecución del bucle
>
incuyen constantes y/o variables …ver más…
•
Las aplicaciones multimedia como los videojuegos tienen un costo de ejecución alto por lo cual la optimización de su desempeño es crítico, la gran mayoría de las veces requieren de procesadores rápidos (e.g. tarjetas de video) o de mucha memoria. •
Otro tipo de aplicaciones que deben optimizarse son las aplicaciones para dispositivos móviles.
•
Los dispositivos móviles tiene recursos más limitados que un dispositivo de cómputo convencional razón por la cual, el mejor uso de memoria y otros recursos de hardware tiene mayor rendimiento.
•
En algunos casos es preferible tener la lógica del negocio más fuerte en otros dispositivos y hacer uso de arquitecturas descentralizadas como cliente/servidor o P2P.
3.2.2 Criterios para mejorar el código
La mejor manera de optimizar el código es hacer ver a los programadores que optimicen su código desde el inicio, el problema radica en que el costo podría ser muy grande ya que tendría que codificar más y/o hacer su código mas legible.
Los criterios de optimización siempre están definidos por el compilador
Criterios de optimización
Muchos de estos criterios pueden modificarse con directivas del compilador desde el código o de manera externa.
Este proceso lo realizan algunas herramientas del sistema como los ofuscadores para código móvil y código para dispositivos móviles.
3.2.3 Herramientas para el análisis del flujo de