الدور ديالنا كمبرمجين مكايقتاصرش فقط على تطوير التطبيقات, و إنما أيضا تسريع أدائها. كاينين العديد من التقنيات اللي كايساعدو على هادشي إلى طبقتيهم بالطريقة الصحيحة, و من بين هاد التقنيات كانلقاو ال Memoization. لكن كيفاش كاتخدم ؟؟
طريقة عملها :
اللي كايخلع فهاد التقنية هو سميتها , أما طريقة العمل بسيطة جدا. هاد التقنية كاتقوم بتخزين (Caching
) الخارج ديال شي Function
و كاتعطيهلنا المرة الثانية ملي كانعيطوليها إلى كانو المداخيل arguments
اللي تعطاوليها المرة اللولة كايشبهو للمداخيل اللي تعطاوليها المرة الثانية.
مثال :
باش نفهمو أكثر غانستعملو مثال. لنفترض عندنا Function
اللي كاتقبل في المداخيل جوج أرقام و كاترد لينا الضرب ديالهم مثلا إلى عطيناها 2 و 4 غاتعطينا 8.
- ملي غانعيطو لهاد ل
Function
اول مرة غانعطيوها 5 و 3 :
هاد ال Function
غاتقلب واش كاينا شي نتيجة مخزنة مسبقا, و بما أننا أول مرة غانعيطوليها إذا مكايناش. لهذا غادير العملية الحسابية و غاتخزن النتيجة و المداخيل اللي عطيناها و غاترد لينا النتيجة, يعني 15.
- ملي غانعيطوليها المرة الثانية غانعطيوها نفس المداخيل اللي عطيناها المرة اللوة 5 و 3 :
ال Function
غاتشوف واش كاينا شي نتيجة مخزنا, غاتلقا 15 , ثم غاتقارن المداخيل اللي تعطاوليها المرة اللي فاتت مع المداخيل ديال هاد المرة, غاتلقاهوم بحال بحال , لذا غاترد لينا النتيجة اللي مخزنة بدون ما تقوم بالعملية الحسابية.
طبعا عملية ضرب بسيطة مغاتشكلش فرق فالأداء , لكن إلى كانت شي عملية اللي كبيرة بزاف و كتاخد وقت و جهد, ال Memoization
غاتسرع ليك الأداء بطريقة كبيرة.
معلومات مهمة :
-
ال
Memoization
مكاتقتاصرش على لغة برمجية محددة , هادي تقنية بإمكانك تستعملها مع أي لغة برمجية. -
ال
Memoization
بإمكانها تخزن شحال ما بغيتي من نتيجة , يعني أنتا كاتحدد شحال بغيتي تخزن من نتيجة, لكن إلى كبر عدد المعلومات اللي كاتخزن إقدر يأثر بالسلب على الأداء.
خلاصة :
ملي كانتكلمو على Memoization
أو غيرها من التقنيات , فإننا كانتكلمو على الخوارزميات, الفرق ما بين مبرمج قاري الخوارزميات و أخر مقاريهمش هو فرق عظيم, هاد الفرق مكايتجلاش بشكل كبير فالقدرة على إنشاء التطبيقات و حل المشاكيل , و إنما فالقدرة على إنشاء برنامج سريع و مكاياكلش ذاكرة كبيرة. ربما كاتضن أن الفرق غايكون مجرد أجزاء من الثانية , راك غالط بزاف, حيت الفرق إقدر يوصل للدقائق , أفضل مثال هو برامج التعديل على الفيديوهات, كاتلقى نفس الحاسوب و نفس المقاطع ... ولكن الوقت المستغرق لتجميع الفيديو كايختالف من برنامج لبرنامج بعدة دقائق.