martes, 17 de mayo de 2011

Introduccion a Optimizacion


=Optimización Local=
La optimización local se realiza sobre módulos del programa. En la mayoría de las ocasiones a través de funciones, métodos, procedimientos, clases, etc.
La característica de las optimizaciones locales es que sólo se ven reflejados en dichas secciones.
Optimización Local
La optimización local sirve cuando un bloque de programa o sección es crítico por ejemplo: la E/S, la concurrencia, la rapidez y confiabilidad de un conjunto de instrucciones.
Como el espacio de soluciones es más pequeño la optimización local es más rápida.
=Optimización de Ciclos (Bucles) =
•Los ciclos son una de las partes más esenciales en el rendimiento de un programa dado que realizan acciones repetitivas, y si dichas acciones están mal realizadas, el problema se hace N veces más grandes.
•La mayoría de las optimizaciones sobre ciclos tratan de encontrar elementos que no deben repetirse en un ciclo.
Ciclos
while(a == b)
{ int c = a; c = 5; …; }
En este caso es mejor pasar el int c =a; fuera del ciclo de ser posible.
Ciclos
•El problema de la optimización en ciclos y en general radica es que muy difícil saber el uso exacto de algunas instrucciones. Así que no todo código de proceso puede ser optimizado. •Otros uso de la optimización pueden ser el mejoramiento de consultas en SQL o en aplicaciones remotas (sockets, E/S, etc.)
=Optimización global =
•En algunos casos es mejor mantener variables globales para agilizar los procesos (el proceso de declarar variables y eliminarlas toma su tiempo) pero consume más memoria.
•Algunas optimizaciones incluyen utilizar como variables registros del CPU, utilizar instrucciones en ensamblador.
=Optimización de mirilla=
Aplicable en c´odigo intermedio o c´odigo objeto.
Constituye una nueva fase aislada.
Idea B´asica
Se recorre el c´odigo buscando combinaciones de instrucciones que
puedan ser reemplazadas por otras equivalentes m´as eficientes.
Se utiliza una ventana de n instrucciones y un conjunto de patrones
de transformaci´on (patr´on, secuencias reemplazam.)
Si las instrucciones de la ventana encajan con alg´un patr´on se
reemplazan por lo secuencia de reemplazmiento asociada.
Las nuevas instrucciones son reconsideradas para las futuras optimizaciones
=Optimización de Costo de Ejecución =
•Los costos de ejecución son aquellos que vienen implícitos al ejecutar el programa.
•En algunos programas se tiene un mínimo para ejecutar el programa, por lo que el espacio y la velocidad del microprocesadores son elementos que se deben optimizar para tener un mercado potencial más amplio.
•Las aplicaciones multimedias como los videojuegos tienen un costo de ejecución alto por lo cual la optimización de su desempeño es crítico, la gran mayoría de las veces requieren de procesadores rápidos (e.g. tarjetas de video) o de mucha memoria.
•Otro tipo de aplicaciones que deben optimizarse son las aplicaciones para dispositivos móviles.
•Los dispositivos móviles tiene recursos más limitados que un dispositivo de cómputo convencional razón por la cual, el mejor uso de memoriay otros recursos de hardware tiene mayor rendimiento.
•En algunos casos es preferible tener la lógica del negocio más fuerte enotros dispositivos y hacer uso de arquitecturas descentralizadas como cliente/servidor o P2P.
=Criterios para Mejorar Código =
•La mejor manera de optimizar el código es hacer ver a los programadores que optimicen su código desde el inicio, el problema radica en que el costo podría ser muy grande ya que tendríaque codificar más y/o hacer su código mas legible.
•Los criterios de optimización siempre están definidos por el compilador.
•Muchos de estos criterios pueden modificarse con directivas del compilador desde el código o de manera externa.
•Este proceso lo realizan algunas herramientas del sistema como los ofuscadores para códigomóvil y código para dispositivos móviles.
=Herramientas para Análisis del Flujo de Datos. =
•Existen algunas herramientas que permiten el análisis de los flujos de datos, entre ellas tenemos los depuradores y desambladores.
•La optimización al igual que la programación es un arte y no se ha podido sistematizar del todo.

Autor: Luis Eduardo Fernandez Rocha (Contacto Linkedin)

No hay comentarios.:

Publicar un comentario