Sobes.tech
Middle

Yadda saxlamanın nə olduğunu bilirsinizmi?

sobes.tech Süni İntellekt

AI-dan cavab

Yaddaşlama, proqramlaşdırmada funksiyaların icrasını sürətləndirmək üçün istifadə olunan optimallaşdırma texnikasıdır və bu, müəyyən giriş parametrləri ilə çağırışların nəticələrini yadda saxlayır.

Sonrakı çağırışda, əvvəlki ilə eyni arqumentlərlə, funksiya nəticəni yenidən hesablamaq əvəzinə, yadda saxlanmış (yaddaşda saxlanılan) dəyəri geri qaytarır.

Bu, xüsusilə resurs tələb edən və deterministik davranışa malik funksiyalar üçün effektivdir (həmişə eyni giriş məlumatları üçün eyni nəticəni qaytaran funksiyalar).

Üstünlüklər:

  • Resurs tələb edən funksiyaların icrasını sürətləndirir.
  • Təkrarlanan hesablamaları qarşısını alaraq prosessor yükünü azaldır.

Əksikliklər:

  • Yaddaşın istifadəsini artırır.
  • Müxtəlif arqumentlərlə tez-tez çağırılan və ya davranışını dəyişən funksiyalar üçün effektiv olmaya bilər.

JavaScript nümunəsi:

function fibonacci(n) { // Fibonacci ədədlərinin funksional tərifi
  if (n <= 1) {
    return n;
  }
  return fibonacci(n - 1) + fibonacci(n - 2); // Rekursiv çağırış
}

// Fibonacci funksiyasının yaddaşlı versiyası
function memoizedFibonacci(n, cache = {}) {
  if (n in cache) { // Nəticənin cache-də olub-olmadığını yoxlayırıq
    return cache[n];
  }

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

  // Nəticəni hesablayıb cache-ə yazırıq
  cache[n] = memoizedFibonacci(n - 1, cache) + memoizedFibonacci(n - 2, cache);
  return cache[n];
}

// Sürət müqayisəsi:
console.time('Yaddaşsız');
fibonacci(40);
console.timeEnd('Yaddaşsız'); // Əhəmiyyətli dərəcədə daha çox vaxt

console.time('Yaddaşlı');
memoizedFibonacci(40);
console.timeEnd('Yaddaşlı'); // Əhəmiyyətli dərəcədə daha az vaxt

Bu nümunədə, yaddaşsız halda, fibonacci funksiyası eyni dəyərləri çox təkrar hesablayır. Yaddaşlı versiya memoizedFibonacci, hesablanmış dəyərləri cache obyektində saxlayır və bu, eyni arqumentlərlə edilən növbəti çağırışları əhəmiyyətli dərəcədə sürətləndirir.