Wat is memoisatie?
sobes.tech AI
Antwoord van AI
Memoisatie is een optimalisatietechniek die in programmeren wordt gebruikt om de uitvoering van functies te versnellen door de resultaten van hun aanroepen met bepaalde invoerparameters op te slaan in een cache.
Bij een volgende oproep van de functie met dezelfde argumenten als eerder, berekent de functie het resultaat niet opnieuw, maar geeft de opgeslagen (geheugende) waarde uit de cache terug.
Dit is vooral effectief voor resource-intensieve functies met een deterministisch gedrag (functies die altijd hetzelfde resultaat teruggeven voor dezelfde invoergegevens).
Voordelen:
- Versnelling van resource-intensieve functies.
- Vermindering van de belasting van de processor door herhaalde berekeningen te vermijden.
Nadelen:
- Toename van het geheugenverbruik voor het opslaan van de cache.
- Kan niet efficiënt zijn voor functies die vaak worden aangeroepen met verschillende argumenten of die van gedrag veranderen.
Voorbeeld in JavaScript:
function fibonacci(n) { // Functionele definitie van Fibonacci-getallen
if (n <= 1) {
return n;
}
return fibonacci(n - 1) + fibonacci(n - 2); // Recursieve oproep
}
// Gememoiseerde versie van de fibonacci-functie
function memoizedFibonacci(n, cache = {}) {
if (n in cache) { // Controleren of het resultaat in de cache staat
return cache[n];
}
if (n <= 1) {
return n;
}
// Resultaat berekenen en opslaan in de cache
cache[n] = memoizedFibonacci(n - 1, cache) + memoizedFibonacci(n - 2, cache);
return cache[n];
}
// Snelheid vergelijken:
console.time('Zonder memoisatie');
fibonacci(40);
console.timeEnd('Zonder memoisatie'); // Veel langer
console.time('Met memoisatie');
memoizedFibonacci(40);
console.timeEnd('Met memoisatie'); // Veel korter
In dit voorbeeld berekent de fibonacci-functie zonder memoisatie meerdere keren dezelfde waarden. De gememoiseerde versie memoizedFibonacci slaat de berekende waarden op in het cache-object, waardoor de volgende aanroepen met dezelfde argumenten aanzienlijk worden versneld.