Memoization là một cách tối ưu hóa được sử dụng trong lập trình để giảm thiểu số lần gọi một hàm dựa vào kết quả của nó trong quá khứ.
Khi một hàm được gọi với cùng một tham số, kết quả của nó sẽ được lưu trữ và sử dụng trong tương lai để tránh việc gọi lại hàm với cùng một tham số.
Điều này giúp tăng tốc độ xử lý và giảm thiểu tài nguyên máy tính.
Ví dụ:
function slowFunction(n) {
console.log(`calculating ${n}...`);
return n * n;
}
const memoizedSlowFunction = (() => {
let cache = {};
return function(n) {
if (n in cache) {
console.log(`retrieving ${n} from cache...`);
return cache[n];
} else {
let result = slowFunction(n);
cache[n] = result;
return result;
}
};
})();
console.log(memoizedSlowFunction(10)); //calculating 10... 100
console.log(memoizedSlowFunction(10)); //retrieving 10 from cache... 100
console.log(memoizedSlowFunction(11)); //calculating 11... 121