7.1 Tipos Optimización
•La optimización va a depender del
lenguaje de programación y es directamente proporcional al tiempo de
compilación; es decir, entre más optimización mayor tiempo de compilación.
•Las optimizaciones pueden realizarse
de diferentes formas. Las optimizaciones se realizan en base al alcance
ofrecido por el compilador de programación y es directamente proporcional al
tiempo de compilación; es decir, entre más optimización mayor tiempo de
compilación.
•Como el tiempo de optimización es
gran consumidor de tiempo (dado que tiene que recorrer todo el árbol de
posibles soluciones para el proceso de optimización) la optimización se deja
hasta la fase de prueba final.
•Algunos editores ofrecen una
versión de depuración y otra de entrega o final.
•La optimización es un proceso que
tiene a minimizar o maximizar alguna variable de rendimiento, generalmente
tiempo, espacio, procesador, etc.
•Desafortunamente no existen
optimizador que hagan un programa más rápido y que ocupe menor espacio.
•La optimización se realiza
reestructurando el código de tal forma que el nuevo código generado tenga
mayores beneficios. La mayoría de los compiladores tienen una optimización
baja, se necesita de compiladores especiales para realmente optimizar el
código.
7.1.1 Locales Optimización
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.
Locales Optimización
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.
7.1.2 Bucles Optimización
•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 generalradica 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.)
7.1.3 Globales Optimización
variables y eliminarlas toma su
tiempo) pero consume más memoria.
•Algunas optimizaciones incluyen
utilizar como variables registros del CPU, utilizar instrucciones en
ensamblador.
7.1.4 De Mirilla Optimización
El pensamiento crítico es un
elemento importante para el éxito en la vida (Huitt, 1993; Thomas y Smoot,
1994). Una Definicion Propuesta: El pensamiento critico debe ser contrastado
con el pensamiento no-critico. pensamiento habitual o rutinario.
la lluvia de ideas
pensamiento creativo
pensamiento prejuicioso el
pensamiento emocional el pensamiento intuitivo
La definicion de Huitt:
El pensamiento crítico es la
actividad mental disciplinada de evaluar los argumentos o proposiciones
haciendo juicios que puedan guiar el desarrollo de las creencias y la toma de
acción to:
7.1.4 Optimización de Mirilla
•La optimización de mirilla trata
deestructurar de manera eficiente el flujo del programa, sobre todo en
instrucciones de bifurcación como son las decisiones, ciclos y saltos de
rutinas.
•La idea es tener los saltos lo
más cerca de las llamadas, siendo el salto lo más pequeño posible.
7.2 Costos Optimización
•Los costos son el factor más
importante a tomar en cuentaa la hora de optimizar ya que en ocasiones la
mejora obtenida puede verse no reflejada en el programa finalpero si ser
perjudicial para el equipo de desarrollo.
•La optimización de una pequeña
mejora tal vez tenga una pequeña ganancia en tiempo o en espacio pero sale muy
costosa en tiempo en generarla.
•Pero en cambio si esa
optimización se hace por ejemplo en un ciclo, la mejora obtenida puede ser N
veces mayor por lo cual el costo se minimiza y es benéfico la mejora.
•Por ejemplo: for(int i=0; i<
10000; i++); si la ganancia es de 30 ms 300s.
7.2.1 Costo de Ejecución
Optimizació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 multimedios 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.
7.2.2 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ía
que 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.
7.2.3 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.
No hay comentarios:
Publicar un comentario