تقليل الحساب المتكرر بإستخدام Memoization
لما الدالة نقية ومكلفة ممكن تحفظ نتيجة المدخل اللي اتحسب بالفعل بدل تكراره
المثال بإستخدام Python 3 لتوضيح الفكرة ويمكن تطبيق نفس المبدأ في لغات تانية
المثال العملي
cache = {}
calls = 0
def square(number):
global calls
if number not in cache:
calls += 1
cache[number] = number * number
return cache[number]
print(square(12))
print(square(12))
print(calls)النتيجة
144
144
1النتيجة اتحسبت مرة واتقرت من الكاش في المرة الثانية والتربيع هنا مجرد مثال صغير للفكرة
جرب بنفسك
استدع الدالة برقم تاني ثم فكر في حد أقصى للكاش لو المدخلات غير محدودة