JavaScript:memoizeグローバル関数
1685 ワード
基本概念
インプリメンテーションコード
ファイル名:
memoize.js
const memoize = function(fn) {
const cache = {};
return function() {
const key = JSON.stringify(arguments);
var value = cache[key];
if(!value) {
console.log(' , ...'); // log,
value = [fn.apply(this, arguments)]; // , undefined,null
cache[key] = value;
} else {
console.log(' '); // log,
}
return value[0];
}
}
module.exports = memoize;
テストコード
ファイル名:
memoize_test.js
const memoize = require('./memoize.js');
const log = console.log;
//
const fibonacci = (n) => {
return n < 2
? n
: fibonacci(n - 1) + fibonacci(n - 2);
};
const memoizeFibonacci = memoize(fibonacci);
log(memoizeFibonacci(45)); // , ...; 1134903170 //
log(memoizeFibonacci(45)); // ; 1134903170
log(memoizeFibonacci(45)); // ; 1134903170
log(memoizeFibonacci(45)); // ; 1134903170
log(memoizeFibonacci(45)); // ; 1134903170
参考記事
js Memoization最適化運転速度
Javascript Memoizerの概要
転載:https://www.jianshu.com/p/4756fbe61a63