Optimizacion

7.-OPTIMIZACION
Las optimizaciones pueden realizarse de diferentes formas. Las optimizaciones se realizan en base al alcance ofrecido por el compilador. Las optimizaciones pueden realizarse de diferentes formas. Las optimizaciones se realizan en base al alcance ofrecido por el compilador.

Velocidad de ejecución
Factores a optimizar Tamaño delprograma
Necesidades de memoria

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 tienea minimizar o maximizar alguna variable de rendimiento, generalmente tiempo, espacio, procesador, etc. Desafortunadamente 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 necesitade compiladores especiales para realmente optimizar el código.

7.1 TIPOS DE OPTIMIZACION
7.1.1 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.
Laoptimizació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.

Ejemplos:

1. Ejecución en tiempo de compilación
Pre calcular expresiones constantes (con constantes o variables cuyo valor no cambia)
i = 2 + 3 ? i =5
j = 4
f = j + 2.5
?
j = 4
f = 6.5

2. Reutilización de expresiones comunes
a = b + c
d = a – d
e = b + c
f = a – d
?
a = b + c
d = a – d
e = a
f = a – d

7.1.2 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 lasoptimizaciones sobre ciclos tratan de encontrar elementos que no deben repetirse en un ciclo.
While (a == b)
{
Int c = a;
c = 5;…;
}
En este caso es mejor pasar el int c =a; fuera del ciclo de ser posible.
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 laoptimización pueden ser el mejoramiento de consultas en SQL o en aplicaciones remotas (sockets, E/S, etc.)

7.1.3 GLOBAL
La optimización global se da con respecto a todo el código. Este tipo de optimización es más lenta pero mejora el desempeño general de todo programa.
Las optimizaciones globales pueden depender de la arquitectura de la máquina.
En algunos casos es mejor mantener variablesglobales 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.

Ejemplo: Optimización Global
IF A(1)<0 & J>0 THEN L:=1 ELSE L:=2;
J:=2;
FOR K:=1 STEP 2 UNTIL J DO
BEGIN
A(K+1):=A(K)+A(K+1);
I:=J;
L:=K*I;
ENDA(1)<0
J>0
L:=2
L:=1

J:=2
K:=1
A(K+1):=A(K)+A(K+1);
I:=J;
L:=K*I
K:=K+2
K La optimización de mirilla trata de estructurar 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.

Ejemplo:…