Professional Documents
Culture Documents
P RE S E N T A:
ING. SISTEMAS COMPUTACIONALES
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.
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.
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.
Locales.
Caractersticas:
Por ejemplo:
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:
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.
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.
CARACTERISTICAS:
Se utiliza en: C#, Java, Javacc, Pyton, Haskell, Ensamblador, Condiciones if,
Condiciones while, case.
DIFERENCIAS
LOCAL
CICLOS
Reemplazan
operaciones
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
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.
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
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