0% encontró este documento útil (0 votos)
5 vistas1 página

Técnicas de Optimización de Código

El documento presenta diversas técnicas de optimización de ciclos en programación, enfocándose en la identificación de ciclos críticos y la reducción de tiempo de ejecución. Se describen métodos como desenrollado, combinación, eliminación de redundancias y reacomodo de operaciones para mejorar la eficiencia del código. Además, se incluyen ejemplos prácticos que ilustran cómo aplicar estas técnicas para optimizar el rendimiento.

Cargado por

Brian Segoviano
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
5 vistas1 página

Técnicas de Optimización de Código

El documento presenta diversas técnicas de optimización de ciclos en programación, enfocándose en la identificación de ciclos críticos y la reducción de tiempo de ejecución. Se describen métodos como desenrollado, combinación, eliminación de redundancias y reacomodo de operaciones para mejorar la eficiencia del código. Además, se incluyen ejemplos prácticos que ilustran cómo aplicar estas técnicas para optimizar el rendimiento.

Cargado por

Brian Segoviano
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

OPTIMIZACIÓN DE CICLOS

TÉCNICAS DE OPTIMIZACIÓN
ANALISIS DE CILOS CRITICO
Identifica los ciclos más
costosos en terminos de tiempo
de ejecución

DESENROLLADO COMBINACIÓN REDUCCIÓN DE FUERZA Y FRECUENCIA RASLADO DE CODIGO


Combinar dos bucles que inicializan diferentes arrays Remplaza operaciones costosas(Exponenciación, multiplicacion, etc.)por Mover cálculos constantes fuera del ciclo y guardarlos en
REACOMODO
Desenrollar un bucle para sumar los elementos de Reorganizar "(a+b)+c" como "a+(b+c)" para reducir el
con el mismo valor. También, fusionar un bucle que otras más eficientes x^2 = x*x variables temporales. Por ejemplo, calcular "x*y" fuera de un
ELIMINACIÓN REDUNDANTE un array pequeño, otro para inicializar una matriz
con valores constantes, y un tercero para repetir
suma y otro que multiplica los elementos de un array. a*10=a<<3 + a<<1 bucle si "x" y "y" son constantes. Calcular "max-3" antes del bucle
número de operaciones. Reacomodar "a*(b+c)" como
"ab + ac" para aprovechar resultados previos.
Optimizar el rendimiento al remover el cálculo Asimismo, combinar bucles anidados que recorren la x/2=x>>1 y almacenarlo en una variable temporal. Asimismo, mover el
una operación simple varias veces. Reorganizar "a && b | c" como "(a && b) | c" para
de "a+0" dentro de un bucle, así como la misma matriz. cálculo "j-k" fuera del bucle y guardar el resultado en una
disminuir la cantidad de evaluaciones necesarias.
subexpresión "j*k" si se calcula repetidamente en
dicho bucle. Además, eliminar cualquier porción
de código que nunca se ejecute debido a una
condición que siempre sea falsa.

EJEMPLOS
EJEMPLOS
EJEMPLOS EJEMPLOS EJEMPLOS Antes: Calcular "(a+b)+c". Después: Reorganizar

EJEMPLOS Antes: Sumar cada número del array uno por Antes: Usar dos bucles separados para ntes: Calcular "x^2" utilizando la operación de
Antes: Calcular "xy" dentro de un bucle
repetitivo, incluso si "x" y "y" son constantes.
como "a+(b+c)" para reducir el número de
operaciones necesarias.
uno. Después: Sumar todos los números del inicializar cada array con el mismo valor. exponenciación. Después: Calcular "x*x", que es
Antes: Calcular "10 + 0". Después: Utilizar array en una sola operación. Después: Calcular "xy" una vez fuera del bucle y
Después: Utilizar un solo bucle para inicializar más eficiente que la exponenciación.
simplemente el número 10. guardar el resultado en una variable temporal. Antes: Calcular "a*(b+c)". Después: Reacomodar
ambos arrays con el mismo valor.
como "ab + ac" para aprovechar resultados
Antes: Usar un bucle para asignar el mismo Antes: Multiplicar "a" por 10. Después: Calcular
Antes: Calcular "6 * 1". Después: Utilizar Antes: Calcular "max-3" en cada iteración del previos y evitar duplicar cálculos.
valor a cada elemento de la matriz. Después: Antes: Tener un bucle para sumar los elementos "a<<3 + a<<1", que es equivalente a multiplicar
simplemente el número 6. Definir la matriz con los valores constantes bucle. Después: Calcular "max-3" una vez antes
de un array y otro bucle para multiplicarlos. por 10 pero más eficiente.
del bucle y almacenarlo en una variable Antes: Evaluar "a && b | c". Después: Reorganizar
directamente. Después: Fusionar ambos bucles en uno solo
Antes: Concatenar una cadena con una cadena temporal. como "(a && b) | c" para disminuir la cantidad de
para realizar ambas operaciones en un solo Antes: Dividir "x" por 2. Después: Calcular "x>>1",
vacía, como en "mensaje + ''". Después: Utilizar evaluaciones necesarias y mejorar la eficiencia
ntes: Repetir la misma operación en un bucle. recorrido. que es más eficiente que la división.
simplemente la cadena original. Antes: Calcular "j-k" repetidamente dentro de un del código.
Después: Calcular el resultado de la operación
para cada repetición y sumarlos. bucle. Después: Calcular "j-k" una vez fuera del
Antes: Utilizar dos bucles anidados separados
bucle y guardar el resultado en una variable
para recorrer la misma matriz. Después:
temporal.
Combinar los dos bucles anidados en uno solo
para recorrer la matriz de manera más eficiente.

También podría gustarte