Memoizatsiya nima?
sobes.tech AI
AIdan javob
Memoizatsiya - bu dasturlashda funksiyalarni bajarish tezligini oshirish uchun ishlatiladigan optimallashtirish texnikasi bo'lib, u ma'lum kirish parametrlariga asoslangan holda chaqiruv natijalarini keshga oladi.
Keyingi safar funksiyani avvalgi argumentlar bilan chaqirganda, funksiya natijasini qayta hisoblamaydi, balki saqlangan (eslab qolingan) qiymatni cache-dan qaytaradi.
Bu ayniqsa resurslarni ko'p sarflaydigan va deterministik xulq-atvorga ega funksiyalar uchun samarali (masalan, har doim bir xil natijani qaytaradigan funksiyalar).
Afzalliklar:
- Resurslarni ko'p sarflaydigan funksiyalarni tezlashtirish.
- Takroriy hisoblashlarni oldini olish orqali protsessor yukini kamaytirish.
Kamchiliklar:
- Cache saqlash uchun xotira iste'molini oshiradi.
- Ko'pincha turli argumentlar bilan chaqiriladigan yoki xulq-atvorini o'zgartiradigan funksiyalar uchun samarali bo'lmasligi mumkin.
JavaScript misoli:
function fibonacci(n) { // Fibonacci sonlarini funksional tarzda aniqlash
if (n <= 1) {
return n;
}
return fibonacci(n - 1) + fibonacci(n - 2); // Rekursiv chaqiruv
}
// Fibonacci funksiyasining memoizatsiyalangan versiyasi
function memoizedFibonacci(n, cache = {}) {
if (n in cache) { // Natija cacheda borligini tekshirish
return cache[n];
}
if (n <= 1) {
return n;
}
// Natijani hisoblab, cachega yozish
cache[n] = memoizedFibonacci(n - 1, cache) + memoizedFibonacci(n - 2, cache);
return cache[n];
}
// Ishlash tezligini taqqoslash:
console.time('Memoizatsiya qilinmagan');
fibonacci(40);
console.timeEnd('Memoizatsiya qilinmagan'); // Ancha uzoqroq vaqt
console.time('Memoizatsiya bilan');
memoizedFibonacci(40);
console.timeEnd('Memoizatsiya bilan'); // Ancha qisqa vaqt
Ushbu misolda, memoizatsiya qilinmagan holda, fibonacci funksiyasi bir xil qiymatlarni ko'p marta hisoblaydi. Memoizatsiyalangan memoizedFibonacci qiymatlarni cache obyekti ichida saqlaydi, bu esa keyingi chaqiruvlarni sezilarli darajada tezlashtiradi.