Memoization: Daha Hızlı JavaScript İşlevlerinin Sırrı
Memoization, aynı giriş bağımsız değişkenleriyle tekrar tekrar çağrılan işlevlerin performansını optimize etmek için programlamada kullanılan bir tekniktir. JavaScript kodunuzu önemli ölçüde hızlandırabilen ve bir işlevin yürütülme sayısını azaltabilen güçlü bir araçtır.
Memoizasyon Nedir?
Notlandırma, bir işlevin sonuçlarını önbelleğe almanıza izin veren bir tekniktir, böylece işlev aynı bağımsız değişkenlerle tekrar çağrıldığında hızlı bir şekilde alınabilir. Başka bir deyişle, not alma, bir işlevin sonuçlarını, işlevin tekrar yürütülmesine gerek kalmadan alınabilecek şekilde saklamanın bir yoludur.
Notlandırma, aynı işlevin aynı giriş bağımsız değişkenleriyle birden çok kez çağrıldığı durumlarda özellikle yararlı olabilir. İşlevin sonuçlarını önbelleğe alarak gereksiz hesaplamalardan kaçınabilir ve kodunuzun performansını önemli ölçüde artırabilirsiniz.
Memoization nasıl çalışır?
Notlandırma, bir işlevin sonuçlarını giriş bağımsız değişkenlerine göre depolayan bir önbellek nesnesi oluşturarak çalışır. İşlev, belirli bir giriş bağımsız değişkenleri kümesiyle ilk kez çağrıldığında, işlev normal şekilde yürütülür ve sonuç, önbellek nesnesinde depolanır.
Aynı giriş bağımsız değişkenlerine sahip işleve yapılan sonraki çağrılar, işlevin yürütülmesini atlayacak ve bunun yerine sonucu önbellek nesnesinden alacaktır. Bu, işlevin yürütme süresini önemli ölçüde hızlandırır ve sunucunuzdaki veya istemci tarafı kodunuzdaki yükü azaltabilir.
JavaScript'te Memoization Uygulamak
JavaScript'te memoizasyonu uygulamanın birkaç yolu vardır. En basit yollardan biri, bir işlevi bağımsız değişken olarak alan ve sonuçları önbelleğe alan yeni bir işlev döndüren bir memoizasyon işlevi oluşturmaktır.
function memoize(func) {
const cache = {};
return function(...args) {
const key = JSON.stringify(args);
if (cache[key]) {
return cache[key];
}
const result = func.apply(this, args);
cache[key] = result;
return result;
};
}
Hafızaya alınan işlev önce, verilen giriş bağımsız değişkenlerinin sonucunun önbellek nesnesinde zaten var olup olmadığını kontrol eder. Varsa, işlev önbelleğe alınan sonucu döndürür. Aksi takdirde işlev, giriş bağımsız değişkenleriyle orijinal işlevi yürütür, sonucu önbellek nesnesinde saklar ve sonucu döndürür.
Performansı Artırmak İçin Notlandırmayı Kullanma
Diyelim ki bir sayının faktöriyelini hesaplayan bir fonksiyonunuz var:
function factorial(n) {
if (n === 0) {
return 1;
}
return n * factorial(n - 1);
}
İşlevi not alarak sonuçları önbelleğe alabilir ve gereksiz hesaplamalardan kaçınabilirsiniz:
const memoizedFactorial = memoize(factorial);
console.log(memoizedFactorial(5)); // 120
console.log(memoizedFactorial(5)); // 120 (retrieved from cache)

![Bağlantılı Liste Nedir? [Bölüm 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































