miércoles, 13 de noviembre de 2013

TIPOS DE OPTIMIZACION

TAREA_8_FERNANDEZ
OPTMIZACION

La optimización busca mejorar la forma en que un programa utiliza los recursos. Las optimizaciones se realizan en base al alcance ofrecido por el compilador. La optimización va a depender del lenguaje de programación y es directamente proporcional al tiempo de compilación; es decir, entre más optimización mayor tiempo de compilación.
Existen diversas técnicas de optimización se pueden clasificar o dividir de diversas formas:
1)      Dependientes de la maquina: técnicas que solo se pueden aplicar a una determinada maquina objeto.
2)     Independientes de la maquina: técnicas que son aplicables a cualquier maquina objeto.
3)      Locales: analizaran solo pequeñas porciones de código y en ellas realizaran mejoras.
4)     Globales: será necesario el análisis de todo el código.

TIPOS DE OPTIMIZACION
Técnicas de optimización que se aplican al código generado para un programa sencillo (aquel que se reduce a un solo procedimiento o subrutina).

1-  LOCALES
La optimización local se realiza sobre módulos del programa. En la mayoría de las ocasiones a través de funciones, métodos, procedimientos, clases, etc.
Las características de las optimizaciones locales es que solo se ven reflejados en dichas secciones. La optimización local sirve cuando un bloque de programa o sección es crítico por ejemplo: la E/S, la concurrencia, la rapidez y confiabilidad de un conjunto de instrucciones.

EJEMPLOS:

1-      Ejecución en tiempo de compilación
Precalcular  expresiones constantes (con constantes o variables cuyo valor no cambia).
3 ! i = 5
j = 4
f = j + 2.5
!
j = 4
f = 6.5

2-     Reutilización de expresiones comunes
a = b + c
d = a - d
e = b + c
f = a - d
!
a = b + c
d = a - d
e = a
f = a – d

3-     Propagación de copias
Ante instrucciones f=a, sustituir todos los usos de f por a.
a = 3 + i
f = a
b = f + c
d = a + m
m = f + d
!
a = 3 + i
b = a + c
d = a + m
m = a + d

4-     Eliminación redundancias en acceso matrices
Localizar expresiones comunes en cálculo direcciones de matrices.

5-     Transformaciones algebraicas:
Aplicar propiedades matemáticas para simplificar expresiones

o   Eliminación secuencias nulas
o   Reducción de potencia
o   Reacondicionamiento de operandos

2- CICLOS

Los ciclos son una de las partes más esenciales en el rendimiento de un programa dado que realizan acciones repetitivas, y si dichas acciones están mal realizadas, el problema se hace N veces más grandes. La mayoría de las optimizaciones sobre ciclos tratan de encontrar elementos que no deben repetirse en un ciclo.
El problema de la optimización en ciclos y en general radica en que es muy difícil saber el uso exacto de algunas instrucciones. Así que no todo código de proceso puede ser optimizado. Otro uso de la optimización puede ser el mejoramiento de consultas en SQL o en aplicaciones remotas (sockets, E/S, etc.).

3-MIRILLA

La optimización de mirilla trata de estructurar de manera eficiente el flujo del programa, sobre todo en instrucciones de bifurcación como son las decisiones, ciclos y saltos de rutinas. La idea es tener los saltos lo más cerca de las llamadas, siendo el salto lo más pequeño posible.
Ideas básicas:

  • Se recorre el código buscando combinaciones de instrucciones que pueden ser reemplazadas por otras equivalentes más eficientes.
  • Se utiliza una ventana de n instrucciones y un conjunto de patrones de transformación (patrón, secuencias, remplazan).
  • Las nuevas instrucciones son reconsideradas para las futuras optimizaciones.
Ejemplos:

  • Eliminación de cargas innecesarias
  • Reducción de potencia
  • Eliminación de cadenas de saltos

CONCLUSION

El objetivo de las técnicas de optimización es mejorar el programa objeto para que nos dé un rendimiento mayor. La mayoría de estas técnicas vienen a compensar ciertas ineficiencias que son inherentes al concepto de lenguaje de alto nivel, el cual suprime detalles de la maquina objeto para facilitar la tarea de implementar un algoritmo.

No hay comentarios:

Publicar un comentario