Underscore.JS - méthode memoize

Syntaxe

_.memoize(function, [hashFunction])

La méthode memoize accélère le calcul lent. Il se souvient d'une fonction donnée en mettant en cache sa sortie. hashFunction si passé est utilisé pour calculer la valeur de hachage pour stocker le résultat en fonction des arguments passés à la fonction d'origine. Voir l'exemple ci-dessous

Exemple

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

Enregistrez le programme ci-dessus dans tester.js. Exécutez la commande suivante pour exécuter ce programme.

Commander

\>node tester.js

Production

4.346655768693743e+208 in 6 ms
832040 in 30 ms