Sunteți pe pagina 1din 12

En la actualidad existen una gran variedad

de programas que se desarrollan para


diversas aplicaciones de todo tipo. Al
usuario final de un programa slo le
interesan dos cosas: que el programa sea
fcil de manejar y que su ejecucin sea lo
ms rpida posible. Para mejorar este
ltimo aspecto cada da se tienen mas en
cuenta las optimizaciones en el cdigo del
programa.

Idealmente, los compiladores deberan


producir cdigo objeto que fuera tan
bueno como si estuviera escrito
directamente por un buen programador.
La realidad es que esto es difcil de
conseguir y muy pocas veces se alcanza
esa meta. Sin embargo, el cdigo
generado por el compilador puede ser
mejorado por medio de unas
transformaciones que se han denominado
tradicionalmente optimizaciones

El objetivo es mejorar el programa


objeto para que nos d un rendimiento
mayor. La mayora de estas tcnicas
vienen a compensar ciertas ineficiencias
que aparecen en el lenguaje fuente,
ineficiencias que son inherentes al
concepto de lenguaje de alto nivel, el
cual suprime detalles de la mquina
objeto para facilitar la tarea de
implementar un algoritmo.

Es importante mencionar que por muchas


optimizaciones que se hayan realizado para
mejorar el rendimiento de un programa,
siempre se obtendr un mejor rendimiento si se
utiliza un algoritmo mejor. Por todo ello, para
obtener un buen programa lo primero es ver
qu algoritmo utilizamos y si no es posible
desarrollar otro ms eficiente. Una vez
implementado el mejor algoritmo, ya se puede
entonces optimizar el cdigo obtenido a partir
de l para mejorar el rendimiento del
programa.
.

Una funcin de costo : Los criterios ms


comunes que se suelen emplear son el
ahorro en el tamao del cdigo, la
reduccin del tiempo de ejecucin y la
mejora de las necesidades del espacio
para los datos del programa.

Una transformacin que preserve el


significado del programa: es lgico que
no tendra sentido realizar
optimizaciones que modificaran el
comportamiento del programa. Aunque
parezca evidente, puede haber
complicadas optimizaciones que fallen
en ese aspecto.

Tcnicas Dependientes de la mquina:


tcnicas que slo se pueden aplicar a
una determinada mquina objeto I
Tcnicas Independientes de la mquina:
tcnicas que son aplicables a cualquier
mquina objeto.

Tcnicas locales: consisten en analizar


slo pequeas porciones de cdigo y en
realizar mejoras en ellas.
Tcnicas globales :Para la aplicacin de
las tcnicas globales ser necesario el
anlisis de todo el cdigo e identificar
cdigo redundante, innecesario, etc.

Las sentencias de un bloque bsico


constituyen una unidad sobre la cual se
aplican las optimizaciones locales. Estas
optimizaciones se pueden dividir en:
Optimizaciones que no modifican la
estructura. Son:

Eliminacin de sub-expresiones comunes.


Eliminacin de cdigo muerto.
Renombrar variables temporales.
Intercambio de sentencias independientes
adyacentes.

Transformaciones algebraicas. Son las que


simplifican expresiones y/o reemplazan
operaciones costosas de la mquina por otras
menos costosas. Adems de este tipo de
optimizaciones locales a un bloque bsico,
Optimizaciones peephole. Intenta mejorar el
rendimiento del programa por medio de
reemplazar esa breve secuencia de
instrucciones objeto por otra secuencia ms
corta y/o ms rpida. Hay varios tipos:
Eliminacin de instrucciones redundantes.
Optimizaciones en el flujo de control.
Uso de instrucciones mquina especficas.

Las tcnicas de optimizacin global se


basan todos ellos en el anlisis global de
flujo de datos. Este anlisis se realiza para el
cdigo de todo el programa, es decir, a lo
largo de los distintos bloques bsicos que
forman el cdigo del programa. Hay dos
tipos de optimizaciones importantes que se
realizan:
La localizacin y la asignacin global de

registros para las variables


Las optimizaciones que se realizan en los bucles.

S-ar putea să vă placă și