Underscore.JS - metodo memoize

Sintassi

_.memoize(function, [hashFunction])

Il metodo memoize accelera il calcolo lento. Ricorda una determinata funzione memorizzando nella cache il suo output. hashFunction se passato viene utilizzato per calcolare il valore hash per memorizzare il risultato in base agli argomenti passati alla funzione originale. Vedi l'esempio sotto

Esempio

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

Salvare il programma sopra in formato tester.js. Eseguire il seguente comando per eseguire questo programma.

Comando

\>node tester.js

Produzione

4.346655768693743e+208 in 6 ms
832040 in 30 ms