Please enable JavaScript.
Coggle requires JavaScript to display documents.
Lenguajes y Autómatas II - Coggle Diagram
Lenguajes y Autómatas II
-
-
UNIDAD 3
Optimización.
-
3.1.1 Locales.
Definición
La optimización local es un tipo de optimización que se aplica a un fragmento de código específico, sin tener en cuenta el resto del programa. Su objetivo es mejorar el rendimiento de ese fragmento de código, reduciendo su tiempo de ejecución, su consumo de memoria o su uso de recursos.
Ejemplos
Eliminación de instrucciones redundantes: Eliminar instrucciones que se ejecutan de forma innecesaria.
Sustitución de operaciones por otras más eficientes: Sustituir operaciones que son menos eficientes por otras que son más eficientes.
Optimización de variables: Eliminar variables temporales, optimizar la asignación de memoria, etc.
Optimización de código condicional: Eliminar bifurcaciones innecesarias, transformar instrucciones condicionales a instrucciones incondicionales, etc.
Herramientas
-
Herramientas de depuración: Las herramientas de depuración pueden utilizarse para identificar oportunidades de optimización.
Herramientas de análisis de código: Las herramientas de análisis de código pueden utilizarse para evaluar el rendimiento de un programa.
3.1.2 Ciclos.
Definición
La optimización de ciclos es un tipo de optimización que se aplica a los ciclos de un programa, con el objetivo de reducir su número de iteraciones o su tiempo de ejecución.
Ejemplos
Eliminar bifurcaciones innecesarias: Si la condición de un bucle siempre se evalúa como verdadera o falsa, se puede eliminar la bifurcación sin afectar al resultado del programa.
Optimización de variables locales: Si una variable local solo se utiliza dentro de un bucle, se puede declarar como variable local al bucle para evitar tener que crearla y destruirla en cada iteración.
Factorización de expresiones invariantes: Si una expresión se evalúa de la misma manera en cada iteración de un bucle, se puede factorizar fuera del bucle para evitar tener que evaluarla en cada iteración.
Optimización de bucles anidados: Si un bucle interior solo se ejecuta si se cumple una condición en el bucle exterior, se puede optimizar combinando los dos bucles en uno solo.
Aplicaciones
Software de productividad: Procesadores de texto, hojas de cálculo, etc.
Software de juegos: Videojuegos, aplicaciones de realidad virtual, etc.
Software científico: Simulación, análisis de datos, etc.
Software de sistemas: Sistemas operativos, aplicaciones de red, etc.
3.1.3 Globales.
Definición
La optimización global es un tipo de optimización que se aplica al código completo de un programa, con el objetivo de mejorar su rendimiento general.
Ejemplos
Eliminación de variables temporales: Si una variable temporal solo se utiliza en una parte del código, se puede eliminar sin afectar al resultado del programa.
Optimización de llamadas a funciones: Si una función se llama repetidamente, se puede optimizar para reducir el tiempo de ejecución de la llamada.
Optimización de código condicional: Si una condición siempre se evalúa como verdadera o falsa, se puede eliminar la condición sin afectar al resultado del programa.
Optimización de código de repetición: Si una parte del código se repite varias veces, se puede optimizar para reducir el número de repeticiones.
3.1.4 De mirilla.
Definición
La optimización de mirilla es un tipo de optimización que se aplica al flujo de control de un programa, con el objetivo de reducir el número de instrucciones ejecutadas.
Ejemplo:
Elimina instrucciones de bifurcación innecesarias: Si la condición de una bifurcación siempre se evalúa como verdadera o falsa, se puede eliminar la bifurcación sin afectar al resultado del programa.
Transforma instrucciones condicionales a instrucciones incondicionales: Si la condición de una instrucción condicional siempre se evalúa como verdadera, se puede transformar la instrucción condicional en una instrucción incondicional.
Optimiza el orden de las instrucciones: Si es posible, se pueden reordenar las instrucciones para reducir el número de instrucciones ejecutadas.
3.2 Costos.
Ejemplo:
El objetivo de la optimización: ¿Cuál es el objetivo de la optimización? ¿Se trata de mejorar el rendimiento, reducir el consumo de memoria, o mejorar la facilidad de mantenimiento?
El tipo de optimización: ¿Qué tipo de optimización se va a aplicar? Algunas optimizaciones son más costosas que otras.
-
Las limitaciones de tiempo y presupuesto: Es importante tener en cuenta las limitaciones de tiempo y presupuesto a la hora de planificar la optimización.
Costos de la optimización
La optimización de un programa informático puede tener un impacto en el rendimiento, el consumo de memoria, la complejidad del código y la facilidad de mantenimiento.
3.2.1 Costo de ejecución. (memoria, registros, pilas).
Costos
El hardware de la computadora: El rendimiento del hardware de la computadora puede afectar al costo de ejecución de un programa.
-
Costos de memoria: El costo de memoria es el tiempo que tarda la computadora en acceder a la memoria.
Costos de procesamiento: El costo de procesamiento es el tiempo que tarda la computadora en ejecutar las instrucciones del programa.
-
-
Costos de acceso a la memoria: El costo de acceso a la memoria es el tiempo que tarda la computadora en acceder a un dato en la memoria.
Costos de almacenamiento de la memoria: El costo de almacenamiento de la memoria es el tiempo que tarda la computadora en almacenar un dato en la memoria.
-
-
Costos de operación: El costo de operación es el tiempo que tarda la computadora en ejecutar una operación.
Costos de control: El costo de control es el tiempo que tarda la computadora en controlar el flujo de ejecución del programa.
-
-
-
-
3.2.3 Herramienta
-
Las herramientas de optimización son programas informáticos que se utilizan para mejorar el rendimiento, el consumo de memoria, la complejidad o la mantenibilidad del código.
-
-
-
Herramientas manuales: Estas herramientas proporcionan información y sugerencias al programador para que pueda realizar la optimización manualmente.
-
Las herramientas automáticas son las más comunes. Estas herramientas suelen utilizar un conjunto de reglas y algoritmos para identificar oportunidades de optimización.
-
-
-
-
-
-
-