Está en la página 1de 7

UNIDAD III OPTIMIZACIN

INTRODUCCIN Todos los compiladores deberan producir un cdigo objeto que sea tan bueno como si estuviera escrito directamente por un programador. La realidad es que generar un cdigo objeto correcto es muy difcil de conseguir por los compiladores y muy pocas veces se alcanza esa meta con el cdigo generado. Sin embargo, el cdigo generado por el compilador puede ser mejorado por medio de transformaciones que se han denominado optimizaciones. El objetivo de la tcnica de optimizacin es mejorar el programa objeto para que nos proporcione un rendimiento mayor durante la ejecucin del programa. Estas tcnicas vienen a compensar la ineficiencia que aparecen en el lenguaje fuente, estas ineficiencias que son propias del concepto de lenguaje de alto nivel, el cual suprime detalles de la maquina objeto que se est utilizando para facilitar la tarea de implementar un algoritmo. Objetivo El objetivo de la optimizacin es mejorar el cdigo objeto final, presentando el significado del programa. Beneficios que se obtienen en la optimizacin: a) b) c) d) e) Mayor velocidad de ejecucin. Reduccin de uso del tamao del programa. Reduccin de uso del tamao de memoria. Mejora las Necesidades de uso de Memoria. Mejora la utilidad de los registros.

3.1 TIPOS DE OPTIMIZACIONES Clasificacin de las optimizaciones: 1) En funcin de la dependencia de la arquitectura. 1.a) Dependientes de la mquina Este tipo de optimizacin aprovechan caractersticas especificas de la mquina virtual objetivo. Entre estas caractersticas se pueden mencionar las siguientes: a) Asignacin de registros, uso de modos de direccionamiento. b) Uso de instrucciones especiales. c) Relleno de pipelines, prediccin de saltos, aprovechamiento y estrategias de memoria cache, etc. 1.b) Independientes de la mquina Este tipo de optimizacin son aplicables en cualquier tipo de mquina virtual objetivo t presentan las siguientes ventajas: a) Ejecucin en tiempo de compilacin. b) Eliminacin de la redundancia de los datos. c) Cambios de orden de ejecucin, en las instrucciones (break, jump, stop, etc.). d) Cambios de orden de ejecucin de funciones. 2) En funcin del mbito de aplicacin Optimizaciones locales: Estas Aplicadas dentro de un Bloque Bsico. Solo estudian las instrucciones del Bloque Bsico Actual.

Optimizaciones Globales: Aplicadas a ms de un Bloque Bsico. Consideran contenido y flujo de datos entre todos o parte de los Bloques Bsicos. Necesidad de recoger informacin sobre los Bloques Bsicos y sus interrelaciones.

3.11 OPTIMIZACIONES LOCALES 1. Se realizan en la ejecucin de un programa en tiempo de compilacin. Pueden pre calcular las expresiones constantes (con constantes o variables, cuyo valor no cambia). Ejemplo: i=2+3i=5 j=4 f = j + 2.5 j=4 f = 6.5 2. Se puede hacer la reutilizacin de expresiones comunes. a=b+c d=ad e=b+c f=ad a=b+c d=ad e=a f=ad 3. Se puede hacer la propagacin de copias de los datos. 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. Eliminacin de redundancias en acceso a las matrices de los datos. Localizar expresiones comunes en clculo de direcciones de matrices. 5. Transformaciones algebraicas: Se pueden aplicar propiedades matemticas para simplificar las expresiones. a) Eliminacin secuencias nulas x+0x 1*xx x/1x b) Reduccin de potencia Reemplazar una operacin por otra equivalente menos costosa. x^2x*x 2*xx+x 4*x,8*x,x<<2,x<<3, x/2x>>2 c) Reacondicionamiento de operadores Cambiar orden de evaluacin aplicando propiedades conmutativa, asociativa y distributiva. Ejemplo: A := B * C * (D + E) = A := (D + E) * B * C

3.1.2 Optimizacin de Ciclos Este tipo de optimizacin propone centrar la optimizacin en las partes ms utilizadas, no se realiza en todo el programa, tambin trata de optimizar los ciclos internos. Realiza mejoras en la factorizacin de expresiones que no cambian, realiza la reduccin de intensidad y eliminacin de variables de induccin. Realiza factorizacin de expresiones invariantes. Expresin invariante de ciclo: Son expresiones cuyo valor es constante durante toda la ejecucin del ciclo. Las optimizaciones de ciclos incluyen constantes y/o variables no modificadas en el cuerpo del bucle. Estas optimizaciones pueden mover expresiones invariantes desde el cuerpo hasta la cabeza del bucle. al sacarlas del bucle, pueden quedar dentro de otro bucle externo => y pueden repetir el proceso.

3.1.3 Optimizaciones globales Este tipo de optimizaciones se produce entre Bloques Bsicos. Se consideran Optimizaciones tpicas: a) Expresiones comunes. Realiza la identificacin de expresiones comunes entre bloques. b) Registros entre bloques bsicos Durante la ejecucin de los programas, realiza asignacin de registros entre bloques bsicos. c) Llamadas a procedimientos. Realiza la Optimizacin de llamadas a procedimientos.

d) Optimizacin de bucles Realiza la Optimizacin de ciclos, durante la ejecucin de funciones.

3.1.4 Optimizacin de Tipo Mirilla (Peephole optimization) Este tipo de optimizacin se aplica en el cdigo intermedio o cdigo objeto. Constituye una nueva fase aislada. Durante la compilacin del programa se recorre el cdigo buscando combinaciones de instrucciones que puedan ser reemplazadas por otras instrucciones equivalentes ms eficientes. Se utiliza una ventana de n instrucciones y un conjunto de instrucciones de transformacin, (Ejemplo: patrones, secuencias reemplazamiento). Si las instrucciones de la ventana encajan con algn patrn reconocido se reemplazan por la secuencia de cdigo de reemplazamiento asociada. Las nuevas instrucciones son reconsideradas para las futuras optimizaciones durante la compilacin del programa fuente. Ejemplos: Eliminacin de cargas de instrucciones innecesarias MOV Ri, X MOV X,Rj MOV Ri,Rj

Reduccin de potencia: Eliminacin de cadenas de saltos if C goto L1 L1: goto L2 if C goto L2 if C goto L1

goto FIN L1: FIN:

3.2 COSTOS Un tema siempre de gran inquietud es el tiempo de ejecucin de nuestras aplicaciones, aunque en los ltimos tiempos se ha optado por no prestar atencin a este aspecto ya que el hardware actual facilita este tema pero siempre es importante tener en cuenta este aspecto, para los que no lo estn teniendo en cuenta aqu les va algo para que reflexionen.

3.2.1 COSTOS DE EJECUCION Los costos de ejecucin son aquellos que vienen implcitos al momento de compilar y ejecutar el programa. En algunos programas se tiene un mnimo para ejecutar dicho programa, por lo que el espacio y la velocidad del microprocesador son elementos que se deben optimizar para tener un mercado potencial ms amplio. Las aplicaciones multimedia como, videojuegos, sistemas de aplicacin o pelculas tienen un costo de ejecucin alto, debido a que requieren grandes capacidades de memoria, por lo cual, la optimizacin de su desempeo es crtico, si no se tiene el espacio suficiente. La mayora de las veces se requiere de procesadores rpidos (tarjetas de video, rpida velocidad de ejecucin) o de mucha memoria. Otro tipo de aplicaciones que deben optimizarse son las aplicaciones para dispositivos mviles. Los dispositivos mviles tienen recursos ms limitados que un dispositivo de cmputo convencional, razn por la cual, el mejor uso de memoria y otros recursos de hardware tienen mayor rendimiento, en estos dispositivos aunque sean muy pequeos.

También podría gustarte