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.