You are on page 1of 17

OPTIMIZACION DE

CODIGOS

OPTIMIZACION DE CODIGO
Es 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
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
memoria

OPTIMIZACION
Se realiza despus de la generacin de cdigo de
todo el programa o de un elemento ejecutable del
programa (funcin, procedimiento, etc).

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

FUNCIONAMIENTO
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

FUNCIONAMIENTO
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 instrucciones
Representaciones de cdigo para extraer informacin:

Trade-Offs
La 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.

Cuellos de botella
La 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).

Niveles de optimizacin

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-intimey
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.

Cundo optimizar

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 males

Tiempo que toma


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.

You might also like