Você está na página 1de 16

3.1 Tipos De Optimizacin 3.1.

1
Locales.
INTEGRANTES:
Guzmn Sosa Eduardo
Gutirrez Martnez Zuri Adriana
Lpez Gil Yolanda Arisbey
Uraga Rodrguez Andrs Jair
Magda
OPTIMIZACIN

La optimizacin es un proceso que tiene a minimizar o


maximizar alguna variable de rendimiento, generalmente
tiempo, espacio, procesador, etc.

La optimizacin se realiza reestructurando el cdigo de


tal forma que el nuevo cdigo generado tenga mayores
beneficios.
TIPOS DE OPTIMIZACIN LOCALES

La optimizacin local se realiza sobre mdulos del


programa. En la mayora de las ocasin es a travs de
funciones, mtodos, procedimientos, clases, etc.

La caracterstica de las optimizaciones locales es que solo


se ven reflejados en dichas secciones.
Para qu sirve?

La optimizacin local sirve cuando un bloque de programa o


seccin es crtico por ejemplo: E/S, la concurrencia, la
rapidez y confiabilidad de un conjunto de instrucciones.
Como el espacio de soluciones es ms pequeo la
optimizacin local es ms rpida.
Las optimizaciones locales se realizan sobre el
bloque bsico.

Optimizaciones locales
Folding
Propagacin de constantes
Reduccin de potencia
Reduccin de subexpresiones comunes
Bloque Bsico.
Un bloque bsico es un fragmento de cdigo que tiene una
nica entrada y salida, y cuyas instrucciones se ejecutan
secuencialmente.
Implicaciones:
Si se ejecuta una instruccin del bloque se ejecutan todas
en un orden conocido en tiempo de compilacin.
La idea del bloque bsico es encontrar partes del
programa cuyo anlisis necesario para la optimizacin sea
lo ms simple posible.
Ensamblamiento (Folding)

El ensamblamiento es reemplazar las expresiones por su


resultado cuando se pueden evaluar en tiempo de
compilacin (resultado constante).

Ejemplo: A=2+3+A+C -> A=5+A+C


Implementacin del Folding

Implementacin del folding durante la generacin de cdigo realizada


conjuntamente con el anlisis sintctico.

Se aade el atributo de constante temporal a los smbolos no terminales y a


las variables de la tabla de smbolos.
Se aade el procesamiento de las constantes a las reglas de anlisis de
expresiones.
Optimiza: 2+3+b -> 5+b
Hay una suma de constantes (2+3)+b
No optimiza: 2+b+3 -> 2+b+3
No hay una suma de constantes (2+b)+3
Implementacin posterior a la generacin de cdigo
Buscar partes del rbol donde se puede aplicar la propiedad conmutativa:
Sumas/restas: como la resta no es conmutativa se transforma en sumas: a+b-
c+d -> a+b+(-c)+d
Productos/divisiones: como la divisin no es conmutativa se transforma en
productos: a*b/c*e -> a*b*(1/c)*e
Buscar las constantes y operarlas
Reconstruir el rbol.
Propagacin de constantes

Desde que se asigna a una variable un valor constante


hasta la siguiente asignacin, se considera a la variable
equivalente a la constante.
Ejemplo: Propagacin Ensamblamiento
PI=3.14 -> PI=3.14 -> PI=3.14
G2R=PI/180 -> G2R=3.14/180 -> G2R=0.017
PI y G2R se consideran constantes hasta la prxima
asignacin.
Estas optimizaciones permiten que el programador utilice
variables como constantes sin introducir ineficiencias. Por
ejemplo en C no hay constantes y ser lo mismo utilizar
Int a=10;
#define a 10
Con la ventaja que la variable puede ser local.
Actualmente en C se puede definir const int a=10;
Reduccin de potencia

Se busca sustituir operaciones costosas por otras ms simples.


Ejemplo:

Sustituir productos por sumas.


a=2*a
a=a+a
Evitar la operacin append (++)
a = length(s1 ++ s2)
convertirlo en
a = length(s1) + length(s2)
Reduccin de subexpresiones comunes

Otra tcnica ms de optimizacin se basa en la eliminacin de cdigo


redundante y en subexpresiones comunes. Un cdigo es redundante si nunca se
puede llegar a l o si una expresin contiene electos superfluos.

Los elementos redundantes en expresiones en expresiones aritmticas son la


suma de 0 o la multiplicacin pero 1. Es probable que el programador no escriba
estos elementos redundantes, pero s pueden aparecer como resultado de la
optimizacin por clculo previo de constantes.
Las subexpresiones comunes pueden ser especificadas en forma explcita por el
programador, como en
x := a / (j * k) b / (j * k) ;
donde j * k es la subexpresin comn. Esta subexpresin se puede eliminar
como sigue:
t := j * k; x := a / t b / t;

No obstante, las sub-expresiones comunes tambin pueden aparecer en forma


implcita al indizar matrices que comprendan operaciones de multiplicacin o
suma.

Você também pode gostar