Memoization تقنية رائعة لتسريع أداء التطبيقات

Memoization تقنية رائعة لتسريع أداء التطبيقات

23 يوليوز 2022|دقيقتين قراءة

الدور ديالنا كمبرمجين مكايقتاصرش فقط على تطوير التطبيقات, و إنما أيضا تسريع أدائها. كاينين العديد من التقنيات اللي كايساعدو على هادشي إلى طبقتيهم بالطريقة الصحيحة, و من بين هاد التقنيات كانلقاو ال Memoization. لكن كيفاش كاتخدم ؟؟

طريقة عملها :

اللي كايخلع فهاد التقنية هو سميتها , أما طريقة العمل بسيطة جدا. هاد التقنية كاتقوم بتخزين (Caching) الخارج ديال شي Function و كاتعطيهلنا المرة الثانية ملي كانعيطوليها إلى كانو المداخيل arguments اللي تعطاوليها المرة اللولة كايشبهو للمداخيل اللي تعطاوليها المرة الثانية.

مثال :

باش نفهمو أكثر غانستعملو مثال. لنفترض عندنا Function اللي كاتقبل في المداخيل جوج أرقام و كاترد لينا الضرب ديالهم مثلا إلى عطيناها 2 و 4 غاتعطينا 8.

  • ملي غانعيطو لهاد ل Function اول مرة غانعطيوها 5 و 3 :

هاد ال Function غاتقلب واش كاينا شي نتيجة مخزنة مسبقا, و بما أننا أول مرة غانعيطوليها إذا مكايناش. لهذا غادير العملية الحسابية و غاتخزن النتيجة و المداخيل اللي عطيناها و غاترد لينا النتيجة, يعني 15.

  • ملي غانعيطوليها المرة الثانية غانعطيوها نفس المداخيل اللي عطيناها المرة اللوة 5 و 3 :

ال Function غاتشوف واش كاينا شي نتيجة مخزنا, غاتلقا 15 , ثم غاتقارن المداخيل اللي تعطاوليها المرة اللي فاتت مع المداخيل ديال هاد المرة, غاتلقاهوم بحال بحال , لذا غاترد لينا النتيجة اللي مخزنة بدون ما تقوم بالعملية الحسابية.

طبعا عملية ضرب بسيطة مغاتشكلش فرق فالأداء , لكن إلى كانت شي عملية اللي كبيرة بزاف و كتاخد وقت و جهد, ال Memoization غاتسرع ليك الأداء بطريقة كبيرة.

معلومات مهمة :

  • ال Memoization مكاتقتاصرش على لغة برمجية محددة , هادي تقنية بإمكانك تستعملها مع أي لغة برمجية.

  • ال Memoization بإمكانها تخزن شحال ما بغيتي من نتيجة , يعني أنتا كاتحدد شحال بغيتي تخزن من نتيجة, لكن إلى كبر عدد المعلومات اللي كاتخزن إقدر يأثر بالسلب على الأداء.

خلاصة :

ملي كانتكلمو على Memoization أو غيرها من التقنيات , فإننا كانتكلمو على الخوارزميات, الفرق ما بين مبرمج قاري الخوارزميات و أخر مقاريهمش هو فرق عظيم, هاد الفرق مكايتجلاش بشكل كبير فالقدرة على إنشاء التطبيقات و حل المشاكيل , و إنما فالقدرة على إنشاء برنامج سريع و مكاياكلش ذاكرة كبيرة. ربما كاتضن أن الفرق غايكون مجرد أجزاء من الثانية , راك غالط بزاف, حيت الفرق إقدر يوصل للدقائق , أفضل مثال هو برامج التعديل على الفيديوهات, كاتلقى نفس الحاسوب و نفس المقاطع ... ولكن الوقت المستغرق لتجميع الفيديو كايختالف من برنامج لبرنامج بعدة دقائق.