Underscore.JS - método memoize

Sintaxis

_.memoize(function, [hashFunction])

El método memoize acelera el cálculo lento. Recuerda la función dada almacenando en caché su salida. hashFunction si se pasa se utiliza para calcular el valor hash para almacenar el resultado en función de los argumentos pasados ​​a la función original. Vea el siguiente ejemplo

Ejemplo

var _ = require('underscore');

var fibonacci = _.memoize(function(n) {
  return n < 2 ? n: fibonacci(n - 1) + fibonacci(n - 2);
});

var fibonacci1 = function(n) {
  return n < 2 ? n: fibonacci1(n - 1) + fibonacci1(n - 2);
};

var startTimestamp = new Date().getTime();
var result = fibonacci(1000);
var endTimestamp = new Date().getTime();
console.log(result + " in " + ((endTimestamp - startTimestamp)) + ' ms');

startTimestamp = new Date().getTime();
result = fibonacci1(30);
endTimestamp = new Date().getTime();
console.log(result + " in " + ((endTimestamp - startTimestamp)) + ' ms');

Guarde el programa anterior en tester.js. Ejecute el siguiente comando para ejecutar este programa.

Mando

\>node tester.js

Salida

4.346655768693743e+208 in 6 ms
832040 in 30 ms