You are on page 1of 14

Subsecretara de Educacin Superior

Direccin General de Educacin Superior Tecnolgica


Instituto Tecnolgico de San Juan del Ro

Instituto Tecnolgico de San Juan del Ro


ENSAYO UNIDAD III
LENGUAJES Y AUTOMATAS II
OPTIMIZACIN

P RE S E N T A:
ING. SISTEMAS COMPUTACIONALES

PERIODO [JUN-DIC 2014]

Contenido
INTRODUCCION........................................................................................................................... 3
OPTIMIZACION ............................................................................................................................ 3
TIPOS DE OPTIMIZACION .......................................................................................................... 5
Locales. ....................................................................................................................................... 5
Ciclos. ......................................................................................................................................... 6
Globales. ..................................................................................................................................... 7
Mirilla. ........................................................................................................................................ 8
COSTOS ........................................................................................................................................10
Ejecucin. ...................................................................................................................................10
Criterios para mejorar el cdigo. .................................................................................................11
Herramientas para el anlisis del flujo de datos. ..........................................................................12
MAPA ............................................................................................................................................13
CONCLUCIONES .........................................................................................................................13
REFERENCIAS .............................................................................................................................14

INTRODUCCION
La optimizacin es el proceso que se realiza para mejorar el rendimiento de una actividad
o proceso, evitando as la prdida de tiempo y de datos. Puede ser aplicado al rendimiento
de sistemas operativos, software, dispositivos mviles y aplicaciones. Puede ser aplicada
en cualquier rea donde se busque o desee realizar una actividad de forma eficaz y
eficiente, sin perder datos relevantes ni tiempo, es la encargada de las constantes
actualizaciones.

La optimizacin de cdigo puede realizarse durante la propia generacin o como paso


adicional, ya sea intercalado entre el anlisis semntico y la generacin de cdigo (se
optimizan las cudruplas) o situado despus de sta (se optimiza a posteriori el cdigo
generado).

El objetivo de las tcnicas de optimizacin es mejorar el programa objeto para que nos d
un rendimiento mayor, se pueden clasificar o dividir de diversas formas.
Por una parte podemos hablar de aquellas tcnicas que son dependientes de la mquina,
y aquellas que son independientes de la mquina (o sea, tcnicas que slo se pueden
aplicar a una determinada mquina objeto y tcnicas que son aplicables a cualquier
mquina objeto).

OPTIMIZACION

El objetivo de las tcnicas de optimizacin 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.
Por ltimo, comentar 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.

Como se puede apreciar en la figura 1. La optimizacin del cdigo es parte fundamental


dentro de la generacin de cualquier software ya que esta forma parte de un proceso a
realizar.

Figura 1.

TIPOS DE OPTIMIZACION
Existen varias tcnicas de optimizacin que se aplican al cdigo generado para un
programa sencillo. Por programa sencillo entendemos aquel que se reduce a un solo
procedimiento o subrutina. Las tcnicas de optimizacin a travs de varios procedimientos.

La optimizacin es un proceso que tiene a minimizar o maximizar alguna variable de


rendimiento, generalmente tiempo, espacio, procesador, etc. Aun no existen optimizador
que hagan un programa ms rpido y que ocupe menor espacio.
La optimizacin se realiza reestructurando el cdigo de tal forma que el nuevo cdigo
generado tenga mayores beneficios.

Locales.
Caractersticas:

a) Optimizaciones que no modifican la estructura. Son:

1. Eliminacin de sub-expresiones comunes.


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

b) Transformaciones algebraicas. Son aquellas transformaciones que simplifican


expresiones y/o reemplazan operaciones costosas de la mquina por otras menos
costosas.

c) Existe otra categora de optimizacin local se le llama optimizacin peephole, e


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.

Por ejemplo:

1. Eliminacin de instrucciones redundantes.


2. Optimizaciones en el flujo de control.
3. Simplificaciones algebraicas.
4. Uso de instrucciones mquina especficas.

Ciclos.
Habitualmente, un programa pasa la mayor parte del tiempo de la ejecucin en un trozo de
cdigo pequeo. A este fenmeno se le conoce como la regla 90-10, queriendo decir que
el 90% del tiempo es pasado en el 10% del cdigo. Este 10% del cdigo suele estar
constituido por bucles, y de ah la importancia de una correcta optimizacin del cdigo que
forma parte de los bucles.

Las principales optimizaciones que se realizan en los bucles son las siguientes:

1. Movimiento de cdigo.
2. Eliminacin de variables inducidas.
3. Sustitucin de variables costosas por otras menos costosas.
Y tambin se suelen aplicar (aunque con menor importancia):
4. Expansin de cdigo (loop unrolling).
5. Unin de bucles (loop jamming).

Para una mquina con registros -lo comn en los procesadores actuales- las instrucciones
cuyos operando estn en los registros de la mquina son ms cortas y ms rpidas que

aquellas que tratan con operando que estn en la memoria. Es por tanto importante decidir
qu variables se deben almacenar en los registros (localizacin) y en qu registro se debe
almacenar cada variable (asignacin). Existen diversas estrategias para la localizacin y
asignacin de los registros.

Es frecuente asignar algn nmero fijo de registros que contengan las variables ms
usadas en un bucle interno, sirviendo los registros restantes para las variables locales a
cada bloque bsico.

CARACTERISTICAS:

Son parte en el rendimiento de un programa dado.

Realizan acciones repetitivas, y si dichas acciones estn mal realizadas, el


problema se hace N veces ms grandes.

Trata de encontrar elementos que no deben repetirse en un ciclo.

Mejoramiento de consultas en SQL o en aplicaciones remotas

Difcil saber el uso exacto de algunas instrucciones.

Globales.
La optimizacin global se da con respecto a todo el cdigo. Este tipo de optimizacin es
ms lenta pero mejora el desempeo general de todo programa. Las optimizaciones
globales pueden depender de la arquitectura de la mquina.

En algunos casos es mejor mantener variables globales para agilizar los procesos (el
proceso de declarar variables y eliminarlas toma su tiempo) pero consume ms memoria.
Algunas optimizaciones incluyen utilizar como variables registros del CPU, utilizar
instrucciones en ensamblador.

Antes de realizar una optimizacin global es necesario crear el grafo de flujo de


ejecucin. El grafo de flujo de ejecucin representa todos los caminos posibles de
ejecucin del programa. La informacin contenida en el grafo es til para el
programador y el optimizador La optimizacin global a partir del anlisis del grafo del
flujo de ejecucin permite

Ejemplo: En la figura 2. Podemos ver un ejemplo.

Figura 2.

Mirilla.
La optimizacin de tipo Mirilla (peephole optimizacin) es aplicable en cdigo intermedio o
cdigo objeto y constituye una nueva fase aislada. Se recorre el cdigo buscando
combinaciones de instrucciones que puedan ser reemplazadas por otras equivalentes ms
eficientes. Se utiliza una ventana de *n instrucciones y un conjunto de patrones de
trasformacin. Si las instrucciones de la ventana encajan con algn patrn se reemplazan
por la secuencia de reemplazamiento asociada.

La optimizacin de mirilla trata de estructurar de manera eficiente el flujo del programa,


sobre todo en instrucciones de bifurcacin como son las decisiones, ciclos y saltos de
rutinas. La idea es tener los saltos lo ms cerca de las llamadas, siendo el salto lo ms
pequeo posible.

CARACTERISTICAS:

Estructurar de manera eficiente el flujo del programa, sobre todo en


instrucciones de bifurcacin como son las decisiones, ciclos y saltos de rutinas.

Tiene los saltos lo ms cerca de las llamadas, siendo el salto lo ms pequeo


posible

Se recorre el cdigo buscando combinaciones de instrucciones que puedan ser


remplazadas Por otras equivalentes ms eficientes

Se utiliza en: C#, Java, Javacc, Pyton, Haskell, Ensamblador, Condiciones if,
Condiciones while, case.

Tabla de diferencias entre la optimizacin del tipo: Local, Ciclos y Mirilla.

DIFERENCIAS
LOCAL

CICLOS

Reemplazan

Es difcil saber el uso

operaciones

exacto de algunas saltos lo ms cerca

costosas
mquina

de
por

la instrucciones
otras

menos costosas.
Tabla1

MIRILLA

de

tener

las

los

llamadas,

siendo el salto lo
ms pequeo posible

COSTOS
Los costos son el factor ms importante a tomar en cuenta a la hora de optimizar ya que
en ocasiones la mejora obtenida puede verse no reflejada en el programa final pero si ser
perjudicial para el equipo de desarrollo. La optimizacin de una pequea mejora tal vez
tenga una pequea ganancia en tiempo o en espacio pero sale muy costosa en tiempo en
generarla.

Pero en cambio si esa optimizacin se hace por ejemplo en un ciclo, la mejora obtenida
puede ser N veces mayor por lo cual el costo se minimiza y es benfico la mejora.
Por ejemplo: for(int i=0; i < 10000; i++); si la ganancia es de 30 ms 300s

Ejecucin.
Los costos de ejecucin son aquellos que vienen implcitos al ejecutar el programa.
En algunos programas se tiene un mnimo para ejecutar el programa, por lo

que el

espacio y la velocidad de los microprocesadores son elementos que se deben optimizar


para tener un mercado potencial ms amplio.

La memoria es uno de los recursos ms importantes de la computadora y en


consecuencia el gestor de memoria es un componente bsico para el funcionamiento de
esta, ya que durante la optimizacin del cdigo se cuidara que esta no sea desperdiciada
en sentencias donde podra realizarse de forma ms eficaz.

Ejemplo:
Las aplicaciones multimedia como los videojuegos tienen un costo de
Ejecucin alto por lo cual la optimizacin de su desempeo es crtico, la gran
Mayora de las veces requieren de procesadores rpidos (e.g. tarjetas de
Video) o de mucha memoria.
Otro tipo de aplicaciones que deben optimizarse son las aplicaciones para
Dispositivos mviles.

Los dispositivos mviles tiene recursos ms limitados que un dispositivo de


Cmputo convencional razn por la cual, el mejor uso de memoria y otros
Recursos de hardware tiene mayor rendimiento.
En algunos casos es preferible tener la lgica del negocio ms fuerte en otros
Dispositivos y hacer uso de arquitecturas descentralizadas como
Cliente/servidor o P2P.

Criterios para mejorar el cdigo.


Cuando un programa se ejecuta sobre un sistema operativo existe un proceso previo
llamado cargador que suministra al programa un bloque contiguo de memoria sobre el cual
ha de ejecutarse. El programa resultante de la compilacin debe organizarse de forma que
haga uso de este bloque. Para ello el compilador incorpora al programa objeto el cdigo
necesario.

Las tcnicas de gestin de la memoria durante la ejecucin del programa difieren de unos
lenguajes a otros, e incluso de unos compiladores a otros.
Para lenguajes imperativos, los compiladores generan programas que tendrn en tiempo
de ejecucin una organizacin de la memoria similar (a grandes rasgos) a la que aparece
en la figura 3.

Figura 3

La mejor manera de optimizar el cdigo es hacer ver a los programadores que


Optimicen su cdigo desde el inicio, el problema radica en que el costo podra
Ser muy grande ya que tendra que codificar ms y/o hacer su cdigo ms
Legible.
Los criterios de optimizacin siempre estn definidos por el compilador
Muchos de estos criterios pueden modificarse con directivas del compilador
Desde el cdigo o de manera externa.
Este proceso lo realizan algunas herramientas del sistema como los
Ofuscadores para cdigo mvil y cdigo para dispositivos mviles.

Herramientas para el anlisis del flujo de datos.


Existen algunas herramientas que permiten el anlisis de los flujos de datos, entre ellas
tenemos los depuradores y des ambladores. La optimizacin al igual que la programacin
es un arte y no se ha podido sistematizar del todo.

Para que el compilador pueda realizar la mayora de las optimizaciones vistas hasta ahora,
es necesario que posea informacin de todo el programa, para poder determinar si una
variable est viva, o si dos sub expresiones son comunes, o si una variable se puede
sustituir por un valor constante, etc.

MAPA

CONCLUCIONES
Despus de todo este anlisis obtenemos que la optimizacin de cdigo no solo nos
permite hacer ms agiles los programas sino que tambin es la fase de optimizacin de
cdigo consiste en mejorar el cdigo intermedio, de modo que resulte un cdigo mquina
ms rpido de ejecutar. Esta fase de la etapa de sntesis es posible sobre todo si el
traductor es un compilador (difcilmente un intrprete puede optimizar el cdigo objeto).
Hay mucha variacin en la cantidad de optimizacin de cdigo que ejecutan los distintos
compiladores. En los que hacen mucha optimizacin, llamados compiladores
optimizadores, una parte significativa del tiempo del compilador se ocupa en esta fase.
Sin embargo, hay optimizaciones sencillas que mejoran sensiblemente el tiempo de
ejecucin del programa objeto sin retardar demasiado la compilacin.

REFERENCIAS
Aho (2006), et. Al. Compiladores: Principios y Tcnicas. Segunda Edicin.
(s.f.). Obtenido de http://lenguajesyautomatas2lizethgiron.blogspot.mx/2013/11/tarea8tipos-deoptimizacionlocalciclos.html
(s.f.). Obtenido de http://arantxa.ii.uam.es/~alfonsec/docs/compila7.htm
(s.f.). Obtenido de http://www.uclm.es/ab/educacion/ensayos/pdf/revista7/r7a21.pdf
(s.f.). Obtenido de http://www.cvc.uab.es/shared/teach/a25002/Optimizacion%20de%20codigo.pdf
(s.f.). Obtenido de http://ditec.um.es/~jmgarcia/papers/ensayos.pdf
(s.f.). Obtenido de http://www.tufuncion.com/optimizar-codigo
(s.f.). Obtenido de http://es.slideshare.net/Sonechkaengel/optimizacin-global
(s.f.). Obtenido de http://ingarely.files.wordpress.com/2012/11/unidad-vii.pdf
(s.f.). Obtenido de https://prezi.com/f2ankz9ryt2m/optimizacion-de-mirilla/
(s.f.). Obtenido de http://www.itescam.edu.mx/portal/asignatura.php?clave_asig=SCD1016&carrera=ISIC-2010-224&id_d=16
(s.f.). Obtenido de https://prezi.com/m-ft53psccpy/321-costo-de-ejecucion-memoria-registros-pilas/
(s.f.). Obtenido de http://www.itescam.edu.mx/principal/sylabus/fpdb/recursos/r101579.PDF

You might also like