Acceder Registrarme

¿TU CÓDIGO VA LENTO?: MEMOIZATION PARA ACELERAR TUS APPS


¿Tu aplicación llama una funcion repetidamente para calcular el mismo resultado? La ineficiencia de código viene de ejecutar estos cálculos innecesarios . Para esto existe una técnica de optimización "memoizatión" que actúa como una libreta para tus funciones, guarda los resultados de cálculos costosos y cuando se solicitan de nuevo con los mismos parámetros, este los devuelve al instante. Te proponemos un ejemplo práctico de memoizatión en TypeScript y lo que necesitas saber para que caso usarla.

Autor: Kenny Rivero (Ver todos sus post)

Memoization TypeScript Caché Algoritmos Optimización de Código

Fecha de publicación: 2026-06-04 11:20:04
Ayúdanos con el arduo trabajo que realizamos.
[ARQUITECTURA DE SOFTWARE] ¿TU CÓDIGO VA LENTO?: MEMOIZATION PARA ACELERAR TUS APPS

¿Qué es la memoization?

la memorización (memoization) es una técnica de optimización que se utiliza principalmente para acelerar los programas de computadora mediante el almacenamiento de los resultados de llamadas a funciones en un caché intermedio.

Se almacena en caché el resultado de una función que ya fue ejecutada, si vuelves a llamarla con los mismos parámetros de entrada, en lugar de repetir todo el trabajo, se recupera de la memoria caché y devuelve el resultado de inmediato.

El flujo de una función memorizada es simple:

  • Recibe los argumentos de entrada.
  • Busca en el caché si ya se ha calculado un resultado para esos parámetros repetidos.
  • Si existe en el caché, retorna el resultado guardado de inmediato.
  • Si no existe, realiza la ejecución del código, guarda el resultado en el caché asociado a esos parámetros y luego lo retorna

TypeScript:

//Fibonacci para un valor de la secuencia

const fibonacci = (() => {

    const cache = new Map();

    return function fib(n: number): number {

        //Consulta al caché

        const cacheValor = cache.get(n);

        if (cacheValor !== undefined) {

            return cacheValor;

        }

        // Fibonacci estándar

        if (n <= 2) {

            return 1;

        }

        const resultado = fib(n - 1) + fib(n - 2);

        cache.set(n, resultado);

        return resultado;

    };

})();

console.time("Primera vez (calculando)");

console.log(fibonacci(40)); // calcula y guarda en caché

console.timeEnd("Primera vez (calculando)");


console.time("Segunda vez (desde el caché)");

console.log(fibonacci(40)); // Instantáneo, lo saca del caché

console.timeEnd("Segunda vez (desde el caché)");

El resultado de la segunda vez será visiblemente más rápido:

12586269025

Primera vez (calculando): 0.67ms

12586269025

Segunda vez (desde el caché): 0.095ms

¿Cuándo debemos usar memoization?

La memorización se ve muy eficiente para mejorar el rendimiento, pero no es una solución para usarlo en todo. A continuación, te presentaré los escenarios en los cuales aplicarlos correctamente para que tu aplicación no se ve afectada o que pueda consumir toda la memoria RAM de tu estación de trabajo.

1. La función debe ser PURA

Vamos alegar que una función pura es aquella que, al recibir los mismos parámetros de entrada, siempre retorna exactamente el mismo valor de salida, independientemente del momento de su ejecución, su base de datos o el estado global.

  • Memorizar: Funciones matemáticas complejas, procesamiento pesado de cadenas de texto o renderizado de datos estáticos.
  • No memorizar: Funciones que realizan consultan a bases de datos, llamadas a APIs externas de forma asíncrona, funciones aleatorias similares a Math.random() o que devuelven tiempo o fecha.

2. Alto costo de procesamiento en relación a almacenamiento

La memorización es un intercambio de recursos de hardware, se utiliza memoria RAM adicional a cambio de tiempo de uso de la CPU.

  • Memorizar: Si la función demanda alto procesamiento, pero sus resultados ocupan poco espacio en memoria.
  • No memorizar: Si el cálculo es muy rápido pero el resultado es un objeto de gran volumen en megabytes, memorizar llenará tu memoria RAM con rapidez.

3. Parámetros repetidos

La memorización sirve si esperas que tu aplicación llame a la función con los mismos parámetros en múltiples ocasiones. Por el contrario, si cada llamada se realiza con parámetros completamente únicos que nunca se repetirán, guardarlo en caché solo servirá para consumir memoria de forma inútil.

CONCLUSIÓN

La memorización es uno de los conceptos de optimización más prácticos y directos en el desarrollo de software. Esta técnica demuestra que la manera más efectiva de acelerar un proceso no consiste en ejecutarlo a mayor velocidad, sino en evitar procesarlo más de una vez. Para implementarla, es fundamental evaluar el balance entre el uso del procesador y la memoria RAM, asegurar que las funciones cumplan con el criterios de pureza, para así evitar la persistencia de datos inconsistentes u obsoletos en la aplicación.



...

INFORMACIÓN SOBRE EL AUTOR DEL ARTÍCULO
KENNY RIVERO : Soy una persona proactiva y responsable con las actividades que tenga a mi cargo. El compromiso laboral que manejo se basa en garantizar un trabajo de calidad, realizado de forma eficiente y eficaz, ya que, poseo las habilidades y valores necesarios; así mismo, mi persona siempre está dispuesta a aprender y tomar en consideración las recomendaciones de mi entorno laboral.


  • Debes estar logueado para realizar comentarios