Underscore.JS - método memoize

Sintaxe

_.memoize(function, [hashFunction])

O método memoize acelera o cálculo lento. Ele se lembra de uma determinada função armazenando sua saída em cache. hashFunction se passado é usado para calcular o valor do hash para armazenar o resultado com base nos argumentos passados ​​para a função original. Veja o exemplo abaixo

Exemplo

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');

Salve o programa acima em tester.js. Execute o seguinte comando para executar este programa.

Comando

\>node tester.js

Resultado

4.346655768693743e+208 in 6 ms
832040 in 30 ms