CodeBlanks Logo Icon CodeBlanks

Memoization

JavaScript kursu · Uzman · Ders 8/63

Pahalı bir fonksiyonun sonucunu önbellekte tutarak memoization yapmayı öğrenirsin.

Memoization

Memoization, pahalı bir fonksiyonun sonucunu hatırlayıp aynı girdi tekrar gelirse yeniden hesaplamak yerine önbellekten döndürme tekniğidir. Önbelleğe Map veya nesne kullanabilirsin.

Önbellekte bulursan buna cache hit, bulamazsan cache miss denir. Miss durumunda fonksiyon çalışır ve sonuç saklanır; hit durumunda ise fonksiyon çağrılmadan sonuç döner.

Uygulama Memoize fonksiyonu

memoize adında bir fonksiyon yaz. fn parametresini alıp önbellekli bir sarmalayıcı döndürsün. Sarmalayıcı, Map ile önbellek kullansın; anahtar için args.join("|") işe yarıyor.

Örnek çözümü göster
Map ile cache oluştur; has ile kontrol et, get ile döndür, set ile sakla.

Örnek çözüm:
function memoize(fn) {
  const cache = new Map();
  return function(...args) {
    const key = args.join("|");
    if (cache.has(key)) return cache.get(key);
    const result = fn(...args);
    cache.set(key, result);
    return result;
  };
}

Saf fonksiyonlar

Memoization yalnızca pure function olarak adlandırılan, aynı girdiye her zaman aynı çıktıyı veren fonksiyonlarda çalışır. Tarihe, rastgele sayıya veya dış kaynağa bağlı fonksiyonları önbelleğe almak yanlış sonuç üretir.

Bu yüzden memoize etmeden önce fonksiyonun yan etkisiz ve deterministik olduğundan emin ol.

Kendini test et

  1. Önbellek kontrolü

    if (cache.____) return cache.get(key);
    Cevabı göster
    if (cache.has(key)) return cache.get(key);
  2. Hangi fonksiyon memoization için uygundur?

    • Rastgele sayı üreten fonksiyon
    • Tarihe göre farklı sonuç döndüren fonksiyon
    • Veritabanından veri çeken fonksiyon
    • Aynı girdiye her zaman aynı sonucu veren fonksiyon
    Cevabı göster

    Aynı girdiye her zaman aynı sonucu veren fonksiyon — Doğru! Saf ve deterministik fonksiyonlar memoization için uygundur.

  3. Önbellek terimlerini eşleştir

    cache hit
    önbellekte bulundu
    cache miss
    önbellekte yok
    pure function
    aynı girdi aynı çıktı
    cache key
    önbellek anahtarı

Uzman bölümündeki tüm dersler