Nâng CaoJavaScript iconJavaScript

Memoization là gì? Cài đặt memoization đơn giản như thế nào?

Memoization là kỹ thuật cache kết quả của hàm dựa trên input để tránh tính toán lại.

Hiệu quả với pure functions có tính toán nặng hoặc đệ quy như Fibonacci.

javascript
function memoize(fn) {
  const cache = new Map();
  return function(...args) {
    const key = JSON.stringify(args);
    if (cache.has(key)) return cache.get(key);
    const result = fn.apply(this, args);
    cache.set(key, result);
    return result;
  };
}

const expensiveFib = memoize(function fib(n) {
  if (n <= 1) return n;
  return expensiveFib(n - 1) + expensiveFib(n - 2);
});
expensiveFib(40); // nhanh — cache hit sau lần đầu

Lưu ý: JSON.stringify không phù hợp nếu args là object có circular reference.

Xem toàn bộ JavaScript cùng filter theo level & chủ đề con.

Mở danh sách JavaScript