Está en la página 1de 16

INSTITUTO TECNOLGICO SUPERIOR DE JESS CARRANZA

ING. EN SISTEMAS COMPUTACIONALES


PROGRAMACION DE SISTEMAS ING. WILBERT HERNANDEZ FERNANDEZ

JOSUE HEBERTO OCHOA VELASQUEZ

TRABAJO DE INVESTIGACIN
UNIDAD 7.- OPTIMIZACIN Quinto semestre GRUPO: 502A

NDICE
INTRODUCCIN ............................................................................................................................. 2 OPTIMIZACIN .............................................................................................................................. 3 7.1 TIPOS DE OPTIMIZACIN......................................................................................................... 4 7.1.1 LOCALES................................................................................................................................ 4 7.1.2 BUCLES. ................................................................................................................................ 6 7.1.3 GLOBALES. ............................................................................................................................ 7 7.1.4 DE MIRILLA. .......................................................................................................................... 9 7.2 COSTOS. ................................................................................................................................... 9 7.2.1 COSTO DE EJECUCIN. ....................................................................................................... 10 7.2.2 CRITERIOS PARA MEJORAR EL CDIGO.............................................................................. 11 7.2.3 HERRAMIENTAS PARA EL ANLISIS DEL FLUJO DE DATOS ................................................. 11 CONCLUSIN ............................................................................................................................... 14

INTRODUCCIN

En sistemas de programacin el hecho de optimizar es buscar un mejor rendimiento para lo que es el sistema operativo. En nuestro caso debemos saber usar bien y correctamente para aprovechar al mximo de nuestra computadora y de nuestro software que en un momento vallamos a utilizar veremos esas mejoras y como nos lo plantean dentro de lo que es la optimizacin de sistemas de programacin.

OPTIMIZACIN

(Optimizacin, optimar). Desde un punto de vista informtico, la optimizacin es la bsqueda y el hecho de mejorar el rendimiento de un sistema operativo, programa o dispositivo, a partir de determinados cambios lgicos (software) o fsicos (hardware). En general, la optimizacin es empleada para que una tarea se realice ms rpidamente. Pero este no siempre es el caso; por ejemplo, en determinados casos lo ms importante es que se consuma menos memoria, por lo tanto, se deben crear programas ms lentos, pero que estn optimizados con respecto la memoria.

La optimizacin se hace siempre con respecto a uno o ms recursos como ser: tiempo de ejecucin, uso de memoria, espacio en disco, ancho de banda, consumo de energa, etc. Muchas veces la optimizacin de un recurso se hace a expensas de otros recursos. Optimizacin de aplicaciones Optimizar una aplicacin significa hacer los cambios pertinentes para que esta se ejecute y funcione ms rpidamente, o para que ocupe menos memoria, o para que gaste menos batera (til en computadoras porttiles). Por lo general la optimizacin de un programa se hace a travs de otros programas, una mejor configuracin o similares, pero siempre a nivel software de todas maneras, la mejor optimizacin que puede hacrsele a una aplicacin es a nivel cdigo fuente,
3

es decir, cambios en las sentencias de programacin. Mejorar los algoritmos resulta en una mejora del rendimiento general de la aplicacin. Tambin puede emplearse un compilador optimizador que ayude a crear una aplicacin ms optimizada.

Muchas veces, la optimizacin de los algoritmos resulta en cdigos menos legibles para los programadores y ms difciles de mantener y expandir.

7.1 TIPOS DE OPTIMIZACIN

Las optimizaciones pueden realizarse de diferentes formas. Las optimizaciones se realizan en base al alcance ofrecido por el compilador. La optimizacin va a depender del lenguaje de programacin y es directamente proporcional al tiempo de compilacin; es decir, entre ms optimizacin mayor tiempo de compilacin Como el tiempo de optimizacin es gran consumidor de tiempo (dado que tiene que recorrer todo el rbol de posibles soluciones para el proceso de optimizacin) la optimizacin se deja hasta la fase de prueba final. Algunos editores ofrecen una versin de depuracin y otra de entrega o final.
7.1.1 LOCALES.

Para una mquina con registros -lo comn en los procesadores actuales- las instrucciones cuyos operandos estn en los registros de la mquina son ms cortas
4

y ms rpidas que aquellas que tratan con operandos que estn en la memoria. Es por tanto importante decidir qu variables se deben almacenar en los registros (localizacin) y en qu registro se debe almacenar cada variable (asignacin).

Existen diversas estrategias para la localizacin y asignacin de los registros. Es frecuente asignar algn nmero fijo de registros que contengan las variables ms usadas en un bucle interno, sirviendo los registros restantes para las variables locales a cada bloque bsico. Un mtodo sencillo para determinar la ganancia que obtenemos por almacenar la variable "x" durante el bucle L es el siguiente: 1. Contaremos un ahorro de una unidad por cada referencia a x en el bucle si x est en un registro y no est precedida por una asignacin a x en el mismo bloque bsico (debido a la naturaleza del algoritmo que empleamos para generar cdigo ver [AHO86]-). 2. Contaremos un ahorro de dos unidades si x es una variable viva a la salida de un bloque bsico en el cual se le ha asignado un valor a x, debido a que evitamos almacenar el valor de x a la salida de ese bloque. Entonces, una frmula aproximada para calcular el beneficio obtenido por colocar la variable x en un registro en el bucle L es:

Donde use(x, B) es el nmero de veces que x es usada en B antes de que sea definida, y live(x, B) es 1 si x est viva a la salida de B y se le asigna un valor en
5

B, y 0 en cualquier otro caso. El clculo de use(x, B) y live(x, B) se realiza gracias al anlisis global del flujo de datos.
7.1.2 BUCLES.

Los ciclos son una de las partes ms esenciales en el rendimiento de un programa dado que realizan acciones repetitivas, y si dichas acciones estn mal realizadas, el problema se hace N veces ms grandes. La mayora 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 optimizacin en ciclos y en general radica es que muy difcil saber el uso exacto de algunas instrucciones. As que no todo cdigo de proceso puede ser optimizado. Otros uso de la optimizacin pueden ser el mejoramiento de consultas en SQL o en aplicaciones remotas (sockets, E/S, etc.)

Habitualmente, un programa pasa la mayor parte del tiempo de la ejecucin en un trozo de cdigo pequeo. A este fenmeno se le conoce como la regla 90-10, queriendo decir que el 90% del tiempo es pasado en el 10% del cdigo. Este 10% del cdigo suele estar constituido por bucles, y de ah la importancia de una correcta optimizacin del cdigo que forma parte de los bucles.

Las principales optimizaciones que se realizan en los bucles son las siguientes: Movimiento de cdigo. Eliminacin de variables inducidas. Sustitucin de variables costosas por otras menos costosas y tambin se suelen aplicar (aunque con menor importancia): Expansin de cdigo (loop unrolling).5. Unin de bucles (loop jamming).
7.1.3 GLOBALES.

En algunos casos es mejor mantener variables globales para agilizar los procesos (el proceso de declarar variables y eliminarlas toma su tiempo) pero consume ms memoria. Algunas optimizaciones incluyen utilizar como variables registros del CPU, utilizar instrucciones en ensamblador. Para que el compilador pueda realizar la mayora de las optimizaciones vistas hasta ahora, es necesario que posea informacin de todo el programa, para poder determinar si una variable est viva, o si dos subexpresiones son comunes, o si una variable se puede sustituir por un valor constante, etc.
7

Esta informacin es recogida por el compilador mediante la resolucin de las dos ecuaciones siguientes:

Donde X, Y, S1 y S2 son diversos conjuntos especficos de cada problema y que definiremos ms adelante. En funcin de que el anlisis se realice hacia adelante (de la primera instruccin de cdigo a la ltima) o hacia atrs, y en funcin del tipo de operador que aparece en la segunda ecuacin (operador unin u operador interseccin), se presentan los siguientes cuatro tipos de problemas en el anlisis del flujo de datos:

Hacia delante Enlace u d Expresiones disponibles Propagacin de copia Direccin Hacia atrs Variable. Vivas Expresiones muy usadas. Enlace du Mediante la resolucin de los cuatro tipos de problemas anteriores se obtiene toda la informacin necesaria para poder realizar las optimizaciones anteriores. Para concretar, y a modo de ejemplo, vamos a desarrollar el problema denominado enlace u d.

7.1.4 DE MIRILLA.

La optimizacin de mirilla trata de estructurar de manera eficiente el flujo del programa, sobre todo en instrucciones de bifurcacin como son las decisiones, ciclos y saltos de rutinas. La idea es tener los saltos lo ms cerca de las llamadas, siendo el salto lo ms pequeo posible Aplicable en cdigo intermedio o cdigo objeto. Constituye una nueva fase aislada. Idea Bsica Se recorre el cdigo buscando combinaciones de instrucciones que puedan ser reemplazadas por otras equivalentes ms eficientes. Se utiliza una ventana de n instrucciones y un conjunto de patrones de transformacin (patrn, secuencias reemplazan.) Si las instrucciones de la ventana encajan con algn patrn se reemplazan por lo secuencia de reemplazamiento asociada. Las nuevas instrucciones son reconsideradas para las futuras optimizaciones
7.2 COSTOS.

Los costos son el factor ms importante a tomar en cuenta la hora de optimizar ya que en ocasiones la mejora obtenida puede verse no reflejada en el programa final pero si ser perjudicial para el equipo de desarrollo. La optimizacin de una pequea mejora tal vez tenga una pequea ganancia en tiempo o en espacio pero sale muy costosa en tiempo en generarla. Pero en cambio si esa optimizacin se hace por ejemplo en un ciclo, la mejora obtenida puede ser N veces mayor por lo cual el costo se minimiza y es benfico la mejora. Por ejemplo: for (int i=0; i< 10000; i++); si la ganancia es de 30 ms 300s
9

7.2.1 COSTO DE EJECUCIN.

Los costos de ejecucin son aquellos que vienen implcitos al ejecutar el programa.

En algunos programas se tiene un mnimo para ejecutar el programa, por lo que el espacio y la velocidad del microprocesador son elementos que se deben optimizar para tener un mercado potencial ms amplio.

Las aplicaciones multimedias como los videojuegos tienen un costo de ejecucin alto por lo cual la optimizacin de su desempeo es crtico, la gran mayora de las veces requieren de procesadores rpidos (e.g. tarjetas de video) o de mucha memoria. Otro tipo de aplicaciones que deben optimizarse son las aplicaciones para dispositivos mviles.

Los dispositivos mviles tienen recursos ms limitados que un dispositivo de cmputo convencional razn por la cual, el mejor uso de memoria y otros recursos de hardware tiene mayor rendimiento.

En algunos casos es preferible tener la lgica del negocio ms fuerte en otro os dispositivos y hacer uso de arquitecturas descentralizadas como cliente/servidor o P2P.

10

7.2.2 CRITERIOS PARA MEJORAR EL CDIGO

La mejor manera de optimizar el cdigo es hacer ver a los programadores que optimicen su cdigo desde el inicio, el problema radica en que el costo podra ser muy grande ya que tendra que codificar ms y/o hacer su cdigo ms legible. Los criterios de optimizacin siempre estn definidos por el compilador

Criterios de optimizacin

Muchos de estos criterios pueden modificarse con directivas del compilador desde el cdigo o de manera externa. Este proceso lo realizan algunas herramientas del sistema como los ofuscadores para cdigo mvil y cdigo para dispositivos mviles.
7.2.3 HERRAMIENTAS PARA EL ANLISIS DEL FLUJO DE DATOS

Existen algunas herramientas que permiten el anlisis de los flujos de datos, entre ellas tenemos los depuradores y des ambladores.

Depurado r

11

Un depurador (en ingls, debugger), es un programa que permite depurar o limpiar los errores de otro informtico. Al Iniciarse la depuracin, el depurador lanza el programa a depurar. ste se ejecuta normalmente hasta que el depurador detiene su ejecucin, permitiendo al usuario examinar la situacin.

El depurador permite detener el programa en: Un punto determinado mediante un punto de ruptura. Un punto determinado bajo ciertas condiciones mediante un punto de ruptura condicional. Un momento determinado cuando se cumplan ciertas condiciones. Un momento determinado a peticin del usuario. Durante esa interrupcin, el usuario puede:

Examinar y modificar la memoria y las variables del programa. Examinar el contenido de los registros del procesador. Examinar la pila de llamadas que han desembocado en la situacin actual. Cambiar el punto de ejecucin, de manera que el programa contine su ejecucin en un punto diferente al punto en el que fue detenido.

Ejecutar instruccin a instruccin. Ejecutar partes determinadas del cdigo, como el interior de una funcin, o el resto de cdigo antes de salir de una funcin. El depurador depende de la arquitectura y sistema en el que se ejecute, por lo que sus funcionalidades cambian de un sistema a otro. Aqu se han mostrado las
12

ms comunes.

Desamblador (disassembler). Programa de computadora que traduce el lenguaje mquina a lenguaje ensamblador (la operacin inversa a ensamblar). Un desensamblador no es un descompilador, pues este ltimo descompila lenguajes de alto nivel (en vez de lenguaje ensamblador, que es un lenguaje de bajo nivel).

El resultado de un desensamblador suele ser ms difcil de interpretar por un humano que el cdigo fuente original. Adems, sus resultados no siempre son exactos. Los desensambladores suelen emplearse en la ingeniera inversa de las aplicaciones. Por ejemplo, muchos crackers emplean desensambladores para crear los keygens de ciertas aplicaciones.

13

CONCLUSIN

La optimizacin en s no solo aplica a lo que es sistemas de programacin sino que aplica tanto las matemticas y lo que es sistema de ecuaciones lineales. En este caso la optimizacin se trata de aprovechar al mximo lo que se va a hacer o ejercer. Como en este caso dentro de lo que es sistemas de programacin nos enfocamos ms a la computadora y la realidad la optimizacin seria de lo que es el sistema operativo sus mejoras de trabajo de ejecucin y dems.

14

15

También podría gustarte