Sobes.tech
Middle

Memoizasyon nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Memoizasyon, fonksiyonların belirli giriş parametreleriyle çağrılarının sonuçlarını önbelleğe alarak çalışma hızını artırmak için kullanılan bir optimizasyon tekniğidir.

Daha sonra aynı argümanlarla fonksiyon çağrıldığında, fonksiyon sonucu yeniden hesaplamaz, bunun yerine önceden kaydedilen değeri önbellekten döndürür.

Bu, özellikle kaynak yoğun ve deterministik davranışa sahip fonksiyonlar (aynı giriş verileri için her zaman aynı sonucu döndüren fonksiyonlar) için oldukça etkilidir.

Avantajlar:

  • Kaynak yoğun fonksiyonların hızını artırır.
  • Tekrarlayan hesaplamaları önleyerek işlemci üzerindeki yükü azaltır.

Dezavantajlar:

  • Önbelleği saklamak için daha fazla bellek kullanımı gerektirir.
  • Sıkça farklı argümanlarla çağrılan veya davranışını değiştiren fonksiyonlar için verimli olmayabilir.

JavaScript ile Örnek:

function fibonacci(n) { // Fibonacci sayılarını fonksiyonel tanımla
  if (n <= 1) {
    return n;
  }
  return fibonacci(n - 1) + fibonacci(n - 2); // Rekürsif çağrı
}

// Fibonacci fonksiyonunun memoize edilmiş versiyonu
function memoizedFibonacci(n, cache = {}) {
  if (n in cache) { // Sonucun cache'te olup olmadığını kontrol et
    return cache[n];
  }

  if (n <= 1) {
    return n;
  }

  // Sonucu hesapla ve cache'e kaydet
  cache[n] = memoizedFibonacci(n - 1, cache) + memoizedFibonacci(n - 2, cache);
  return cache[n];
}

// Çalışma hızını karşılaştır:
console.time('Memoizasyon olmadan');
fibonacci(40);
console.timeEnd('Memoizasyon olmadan'); // Çok daha uzun zaman

console.time('Memoize ile');
memoizedFibonacci(40);
console.timeEnd('Memoize ile'); // Çok daha kısa zaman

Bu örnekte, memoizasyon olmadan, fibonacci fonksiyonu aynı değerleri tekrar tekrar hesaplar. Memoize edilmiş versiyon memoizedFibonacci, hesaplanan değerleri cache nesnesinde saklar ve böylece aynı argümanlarla yapılan sonraki çağrıları önemli ölçüde hızlandırır.