Está en la página 1de 9

Instituto Tecnolgico De

Ciudad Jurez
Lenguajes y Autmatas ll
Unidad lll
OPTIMIZACION
Castaeda Rosa del Carmen
NumControl: 10111033
Kevin Brayan Luna Figueroa

17 de Octubre del 2013

Locales
La optimizacin local se realiza sobre mdulos del programa. En la
mayora de las ocasiones a travs de funciones, mtodos,
procedimientos, clases, etc.
La caracterstica de las optimizaciones locales es que slo se ven
reflejados en dichas secciones.
La optimizacin local sirve cuando un bloque de programa o seccin
es crtico por ejemplo: la 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

Mirilla
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

Bucle
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
constitudo 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).

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.
Ejemplo:

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

Costo de 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.
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 tienen 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.

Memoria
La memoria es uno de los recursos ms importantes de la
computadora y, en consecuencia, la parte del sistema operativo

responsable de tratar con este recurso, el gestor de memoria, es un


componente bsico del mismo. El gestor de memoria del sistema
operativo debe hacer de puente entre los requisitos de las
aplicaciones y los mecanismos que proporciona el hardware de
gestin de memoria.

Registros
Los registros del procesador se emplean para controlar instrucciones
en ejecucin, manejar direccionamiento de memoria y proporcionar
capacidad aritmtica. Los registros son espacios fsicos dentro del
microprocesador con capacidad de 4 bits hasta 64 bits dependiendo
del microprocesador que se emplee. Los registros son direccionales
por medio de una vieta, que es una direccin de memoria. Los bits,
por conveniencia, se numeran de derecha a izquierda (15,14,13....
3,2,1,0), los registros estn divididos en seis grupos los cuales tienen
un fin especfico

La pila
La aparicin de lenguajes con estructura de bloque trajo consigo la
necesidad de tcnicas de alojamiento en memoria ms flexibles, que
pudieran adaptarse a las demandas de memoria durante la ejecucin
del programa.
En, en general los compiladores, la asignacin de memoria de
variables locales se hace de una forma flexible, atendiendo al hecho
de que solamente necesitan memoria asignada desde el momento
que comienza la ejecucin de la funcin hasta el momento en que
sta finaliza.
As, cada vez que comienza la ejecucin de un procedimiento (o
funcin) se crea un registro de activacin para contener los objetos
necesarios para su ejecucin, eliminndolo una vez terminada sta.
Dado que durante la ejecucin un programa es habitual que unos
procedimientos llamen a otros y estos a otros, sucesivamente, se crea
cadena jerrquica de llamadas a procedimiento.

Criterios para mejorar el cdigo


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 mas 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 desambladores.
La optimizacin al igual que la programacin es un arte y no se ha
podido sistematizar del todo.

Algoritmo para optimizar cdigo


DESCRIPCIN DEL ALGORITMO PSO 21