Глосарій

Мемоізація

Мемоізація — оптимізація: результати дорогих функцій кешуються по аргументах і повертаються без повторного обчислення при тому самому вході. Підвид кешування, де ключ — аргументи функції.

Приклад

function memoize(callable $fn): Closure {
  $cache = [];
  return function() use ($fn, &$cache) {
    $key = serialize(func_get_args());
    if (!isset($cache[$key])) {
      $cache[$key] = $fn(...func_get_args());
    }
    return $cache[$key];
  };
}

$expensiveFib = memoize(function(int $n) use (&$expensiveFib): int {
  return $n <= 1 ? $n : $expensiveFib($n-1) + $expensiveFib($n-2);
});

$expensiveFib(40); // O(n) замість O(2^n)

Коли застосовувати