5- متابعة المشاركة 4#

https://arabia.io/go/6441

بما أن المهم في تطبيقات الزمن الحقيقي هو الزمن إلا أنه وحتى نكون دقيقين في الوصف ليس كل البرنامج بحاجة لأن يكون زمن تنفيذ شيفرته هو المقصود وإنما هناك مقاطع من الشيفرة هي المعنية والتي تكون مسؤولة عن معالجة البيانات كمثال في برنامجنا المتابعة عن طريق الكاميرا

الجزء المهم من البرنامج هو الحدث الذي يقدح عند كل إطار أو فريم صورة جديد قادم من الكاميرا

أما حدث Load للبرنامج والتهيئات الأولية وأحداث طارئة مثل النقر على زر ما لإيقاف الكامير أو بدأ التسجيل أو الانتقال بين الكاميرات كل هؤلاء ليسوا بذات الأهمية من حيث الزمن

وذلك لأنه ينبغي على الحدث أن ينهي ما بداخله من أكواد قبل ورورد الفريم التالي ولو افترضنا أننا ضبطنا تردد الكاميرا على 24 فريم في الثانية فهذا يعني أنه لدينا فقط 0.04 ثانية أي 40 ملي ثانية لكي ننجز الخوارزميات والإجراءات التي داخل حدث الفريم

من هذا المنطلق ما أريد أن أقوله أنه في هذا البلوك أي جسم الحدث يجب إخراج كل ما هو ليس ضروري وغير مرتبط بالصورة الجديدة

كحجز المصفوفات والثوابت والمتحولات والتهيئات الأولية

صحيح أنه من الأصول أن لا نصرح عن المتحول إلى حيث نستخدمه حتى لا يشغل الذاكرة بدون فائدة ولكن في حالتنا أصبح هناك أولويات وهو الزمن

لذلك لتحجز الذاكرة من أول البرنامج إلى آخره أفضل من إضاعة وقت للتصريح في كل مرة يقدح فيها الحدث

كمثال :

طالما أني أعرف قياس الصورة مسبقا إذا فحجم المصفوفات اللازمة معروفة وثابتة فلنقم بحجزها من البداية ولتبقى محجوزة

بالتأكيد سيتبادر للذهن سؤال وماذا لو احتجت للمصفوفة بقيمها الأولية في كل مرة

وهنا أجيب أنه أحاول تهيئة المصفوفة بالقيم الأولية إن كان ذلك أسرع من إنشاء مصفوفة جديدة

وبالتجربة كان زمن تنفيذ حلقة تمر على كل العناصر لتضع فيها قيمة افتراضية أكبر من زمن إنشاء مصفوفة بتعليمة new

إلا أنه يوجد تعليمة أسرع من هذه وتلك وهي منهج Clear التابع للصنف Array بحيث تمرر له المصفوفة وطولها فيقوم بتهيئة العناصر إلى القيم الافتراضية.

نفس الأمر ينطبق على المتحولات والكائنات

إذا نحاول أن نصدر تعليمات new خارج حدث المعالجة ونضعه في بداية تشغيل البرنامج

في حال احتجنا لقيم ثابتة الأفضل بدل من استخدامها في متحولات أن نستخدمها كثابت مصرح عنه أو كرقم مباشر داخل التعليمة لأن هذا يختصر عملية الذهاب لحجرة الذاكرة لإحضار القيمة

الخلاصة أنه في تطبيقات الزمن الحقيقي طالما أن العامل الأهم هو الزمن فيجب أن نضحي بالمساحات التخزينية و زمن الأقلاع والتهيئة

يتبع .. 6