Essays.club - Ensayos gratis, notas de cursos, notas de libros, tareas, monografías y trabajos de investigación
Buscar

Ensayo de Optimización de Código Intermedio

Enviado por   •  17 de Abril de 2018  •  1.515 Palabras (7 Páginas)  •  369 Visitas

Página 1 de 7

...

• El método lista.numElementos(). Recorre los elementos y va incrementando un contador.

• Aumenta el tiempo de ejecución (overhead) si se ejecuta frecuentemente.

• Cambio: agregar el atributo longitud. Sumar 1 al agregar y restar 1 al eliminar.

• Ahora lista.numElementos() simplemente devuelva el valor de longitud.

• No afecta demasiado a insertar() y eliminar(), solo requiere 4 bytes adicionales. 1

Otras de las tendencias según Gálvez (2005) es acomodar el código en diferentes secciones y cada sección podrá tener el código existente de esas partes, es decir organizarlo por su funcionalidad y nos da cuáles son esas secciones para organizarlo en tiempo de ejecución:

- Zona de Código: Es la zona donde se almacenan las instrucciones del programa ejecutable en código máquina, y también el código correspondiente a los procedimientos y funciones que utiliza. Su tamaño y su contenido se establecen en tiempo de compilación y por ello se dice que su tamaño es fijo en tiempo de ejecución.

- Zona de Variables: Los datos que maneja un programa se dividen actualmente en tres grandes bloques:

- Uno dedicado a almacenar las variables globales accesibles por cualquier línea de código del programa. Este bloque es la Zona de Datos de Tamaño Fijo.

- Otro dedicado a almacenar las variables locales a cada función y procedimiento.

- Un último bloque dedicado a almacenar los bloques de memoria gestionados directamente por el usuario mediante sentencias malloc/free, new/dispose, etc.

-

- Pila: Un lenguaje con estructura de bloques es aquél que está compuesto por módulos o trozos de código cuya ejecución es secuencial; estos módulos a su vez pueden contener en su secuencia de instrucciones llamadas a otros módulos y ellos a otros.

Este tipo de lenguajes trajo la necesidad de técnicas de alojamiento en memoria más flexibles, que pudieran adaptarse a las demandas de memoria durante la ejecución del programa debido a las invocaciones recursivas. Estas memorias se llaman pilas y ahí se almacenan los datos.

- Montón: Cuando el tamaño de un objeto a colocar en memoria puede variar en tiempo de ejecución, no es posible su ubicación en la pila, y mucho menos en la zona de datos de tamaño fijo. Son ejemplos de este tipo de objetos las listas y los árboles dinámicos, las cadenas de caracteres de longitud variable, etc. Para manejar este tipo de objetos el compilador debe disponer de un área de memoria de tamaño variable y que no se vea afectada por la activación o desactivación de procedimientos. Este trozo de memoria se llama montón.

Otra técnica usada es modificar la implementación es decir, no cambia el espíritu del algoritmo, pero si podemos cambiar el orden de las instrucciones y también cambiar la organización del código, eliminando funciones sin usar.

Conclusiones:

En la optimización de código existen muchas técnicas y no podemos decir que con utilizar una técnica ya tenemos asegurada la optimización o que esta opción sea la mejor, sino que usaremos la que se adapte mejor para nuestro código. También añadir que todas las técnicas que usamos no siempre pueden ser utilizadas ya que a veces es más el tiempo de o el costo de implementarlas que la optimización que nos dan.

También si queremos tener el mejor código de optimización debemos usar el óptimo, es decir si tenemos 3 opciones, debemos usar el que optimice mejor, esto es algo que no debemos olvidar. Y por último es más importante hacer una buena estructuración del programa antes de programarlo, es decir hacer la optimización en la misma estructura del programa, para cuando lo ejecutemos ya no entre a hacer estas optimizaciones.

Y en mi opinión creo que es importante seguir utilizando las optimizaciones aun cuando los componentes del CPU sean potentes, podremos tener un buen trabajo del mismo.

Bibliografía:

Aho (2008):

Aho, Alfred V.; Ravi Sethi, Jeffrey D. Ullman (2008). Compiladores: Principios,

técnicas y prácticas. México: Addison Wesley. Segunda Edición.

García Carrasco (2013):

García Carrasco, José M. Universidad de Castilla (2013). LA OPTIMIZACION: UNA MEJORA EN LA EJECUCION DE PROGRAMAS. España.

Sergio Gálvez (2005):

Galvez Rojas, Sergio; Mora Mata, Miguel A.Compiladores: Traductores y compiladores con LEX/YACC, JFLEX/CUP Y JAVACC. Año 2005

(1)

http://www.ciens.ula.ve/cff/caoticos/PDFs/SEM_091113.pdf

...

Descargar como  txt (9.9 Kb)   pdf (60.5 Kb)   docx (15.7 Kb)  
Leer 6 páginas más »
Disponible sólo en Essays.club