optimizacion de codigos

17
OPTIMIZACION DE CODIGOS

Upload: luis-mariano

Post on 13-Nov-2015

31 views

Category:

Documents


1 download

DESCRIPTION

Optimizacion de Codigos a nivel de placa de aplicacion.

TRANSCRIPT

OPTIMIZACION DE CODIGOS

OPTIMIZACION DE CODIGOSEs el proceso de modificacin de unsoftwarepara hacer que algn aspecto del mismo funcione de manera mseficientey/o utilizar menos recursos (mayorrendimiento). En general, unprogramapuede ser optimizado para que se ejecute ms rpidamente, o sea capaz de operar con menosmemoriau otros recursos, o consuman menos energa.OPTIMIZACION DE CODIGO

La palabra "optimizacin", comparte la misma raz que "ptimo", es raro que el proceso de optimizacin produzca un sistema verdaderamente ptimo. El sistema optimizado tpicamente slo ser ptimo en una aplicacin o para una audiencia. Se podra reducir la cantidad de tiempo que un programa se toma para realizar alguna tarea logrando que consuma ms memoria. En una aplicacin donde el espacio de la memoria es un bien escaso, se podra elegir unalgoritmoms lento con el fin de utilizar menos memoriaOPTIMIZACIONSe realiza despus de la generacin de cdigo de todo el programa o de un elemento ejecutable del programa (funcin, procedimiento, etc).OPTIMIZACION

Obtener cdigo que se ejecuta ms eficientemente segn los criterios Tiempo de ejecucin (optimizacin temporal) Espacio de memoria utilizado (optimizacin espacial)Objetivo de la Optimizacin

Revisa el cdigo generado a varios niveles de abstraccin y realiza las optimizaciones aplicables al nivel de abstraccin Representaciones de cdigo intermedio de ms a menos abstractas rbol sintctico abstracto: optimizar subexpresiones redundantes, reduccin de frecuencia, etc. Tuplas o cuadruplas: optimizar en uso de los registros o de las variables temporales. Ensamblador/Cdigo mquina: convertir saltos a saltos cortos, reordenar instruccionesFUNCIONAMIENTORevisa el cdigo generado a varios niveles de abstraccin y realiza las optimizaciones aplicables al nivel de abstraccin Representaciones de cdigo intermedio de ms a menos abstractas rbol sintctico abstracto: optimizar subexpresiones redundantes, reduccin de frecuencia, etc. Tuplas o cuadruplas: optimizar en uso de los registros o de las variables temporales. Ensamblador/Cdigo mquina: convertir saltos a saltos cortos, reordenar instrucciones Representaciones de cdigo para extraer informacin: grafos.FUNCIONAMIENTOLa optimizacin general se centra en la mejora de uno o dos aspectos del rendimiento: el tiempo de ejecucin, uso de memoria, espacio en disco, ancho de banda, el consumo de energa o algn otro recurso. Para ello se requiere un trade-off, donde uno de los factores se optimiza a expensas de los dems. Por ejemplo, aumentar el tamao de cach mejora el rendimiento del tiempo de ejecucin, aunque tambin aumenta el consumo de memoria. Otras ventajas y desventajas comunes incluyen la claridad del cdigo y la concisin.Trade-OffsLa optimizacin puede incluir buscar cuellos de botellas, una parte critica de cdigo que es la principal consumidora de los recursos necesarios, a veces conocida comohot-spot.Enciencias de la computacinelprincipio de Paretose puede aplicar a la optimizacin de recursos observando que el 80% de los recursos son tpicamente usados por el 20% de las operaciones en promedio. Eningeniera de softwarees a menudo una mejor aproximacin decir que el 90% del tiempo de ejecucin de un programa se gasta en ejecutar el 10% del cdigo (conocido como la ley 90/10 en este contexto).

Cuellos de botella

Nivel de diseo: En el nivel ms alto, el diseo puede ser optimizado para aprovechar al mximo los recursos disponibles. La implementacin de un proyecto se beneficiar de una buena seleccin de algoritmos eficientes y la aplicacin de estos algoritmos se beneficiarn de la escritura de cdigo de buena calidad. Niveles de optimizacin

Nivel de cdigo fuente: Evitar la codificacin de mala calidad tambin puede mejorar el rendimiento, evitando ralentizaciones obvias. Despus de eso, sin embargo, algunas optimizaciones pueden disminuir el mantenimiento. Algunas optimizaciones en la actualidad se pueden realizar por loscompiladoresoptimizadores.Niveles de optimizacin

Nivel de armado: Entre el cdigo y el nivel de compilacin,directivasyflagspueden ser usados para ajustar las opciones de rendimiento en el cdigo fuente y el compilador respectivamente, como el uso delpreprocesadorpara desactivar caractersticas innecesarias de software, o la optimizacin de los modelos de procesadores especficos o capacidades de hardware.

Niveles de optimizacin

Nivel de compilacin: El uso de un compilador optimizador tiende a asegurar que el programa ejecutable se optimiza por lo menos tanto como el compilador puede predecir.

Niveles de optimizacin

Nivel ensamblador: En el nivel ms bajo, la escritura de cdigo utilizandolenguaje ensamblador, diseado para una plataforma de hardware particular, pueden producir el cdigo ms eficiente y compacta si el programador se aprovecha de todo el repertorio de instrucciones de la mquina.

Niveles de optimizacin

Tiempo de ejecucin: Los compiladoresjust-in- timey los programadores de ensamblador pueden ser capaz de realizar la optimizacin en tiempo de ejecucin exdiendo la capacidad de los compiladores estticos, ajustando dinmicamente los parmetros de acuerdo con la entrada actual u otros factores.

Niveles de optimizacin

La optimizacin puede reducir lalegibilidady agregarcdigoque se utiliza slo para mejorar el rendimiento. Esto puede complicar programas o sistemas, lo que hace que sean ms difciles demantenerydepurar. Como resultado, la optimizacin o el rendimiento a menudo se realiza al final de la etapa de desarrollo. Debemos olvidarnos de las pequeas eficiencias, por ejemplo, el 97% del tiempo: la optimizacin prematura es la raz de todos los malesCundo optimizar

A veces el tiempo que se tarda en optimizar puede ser en si mismo un problema.Optimizar un cdigo existente no agrega nuevas caractersticas, y peor, puede llegar a agregarbugsen cdigo que previamente no los tena. Debido a que la optimizacin manual a veces hace el cdigo menos claro que el cdigo no optimizado, la optimizacin puede impactar en la compatibilidad como consecuencia. La optimizacin tiene un precio y es importante asegurar que invertir en eso ser beneficioso.

Tiempo que toma optimizar