من بين التقنيات العديدة لتحسين حجم كود البرنامج، يتضمن معظمها إزالة العناصر غير الضرورية من الكود. يقوم Visual Basic تلقائيًا بإزالة عناصر معينة عند ترجمة أحد التطبيقات. لا يوجد حد لطول أو عدد أسماء المعرفات والتعليقات والأسطر الفارغة. عند تشغيل التطبيق كملف .EXE، لن تؤثر هذه العناصر على حجم الذاكرة التي يشغلها التطبيق. العناصر الأخرى، مثل المتغيرات والنماذج والإجراءات، تشغل بعض المساحة في الذاكرة. من الأفضل تبسيطها لجعلها أكثر كفاءة. يقدم ما يلي 6 طرق يمكن استخدامها لتقليل الذاكرة التي يتطلبها التطبيق وتقليل حجم الكود، وآمل أن تكون مفيدة للمبتدئين.
1. قم بتقليل عدد نماذج التحميل وعناصر التحكم واستخدم التسميات بدلاً من مربعات النص
يشغل كل نموذج تم تحميله، سواء كان مرئيًا أم لا، مقدارًا معينًا من الذاكرة (يختلف المقدار وفقًا لنوع وعدد عناصر التحكم في النموذج، وحجم الصورة النقطية في النموذج، وما إلى ذلك). قم بتحميل النموذج فقط عندما تحتاج إلى عرضه، ثم قم بإلغاء تحميل النموذج عندما لم تعد هناك حاجة إليه (بدلاً من إخفاء النموذج). تذكر أن أي مرجع إلى خصائص النموذج أو أساليبه أو عناصر تحكمه، أو إلى متغير نموذج تم تعريفه باستخدام جديد، سيؤدي إلى قيام Visual Basic بتحميل النموذج.
عند استخدام أسلوب Unload لإلغاء تحميل نموذج، يمكن تحرير جزء فقط من المساحة التي يشغلها النموذج. لتحرير كل المساحة، استخدم الكلمة الأساسية Nothing لإبطال مرجع النموذج:
عند تصميم تطبيق ما، يجب أن تستخدم النماذج أقل عدد ممكن من عناصر التحكم. يعتمد الحد الفعلي على نوع عنصر التحكم والنظام، ولكن في الممارسة العملية، سيتم تشغيل النموذج الذي يحتوي على عدد كبير من عناصر التحكم ببطء. أحد الأساليب ذات الصلة هو استخدام صفائف من عناصر التحكم كلما أمكن ذلك عند التصميم، بدلاً من وضع عدد كبير من عناصر التحكم من نفس النوع في النموذج. مصفوفة التحكم هي مجموعة من عناصر التحكم ذات اسم ونوع شائعين. مسار الأحداث هو نفسه أيضًا. في وقت التصميم، تستهلك إضافة عناصر تحكم باستخدام صفيف تحكم موارد أقل من إضافة عناصر تحكم متعددة من نفس النوع مباشرةً إلى النموذج. تكون صفائف التحكم مفيدة أيضًا عندما تريد أن تقوم عدة عناصر تحكم بمشاركة التعليمات البرمجية. تستهلك تسمية التحكم في التسمية موارد Windows أقل من مربع النص Textbox، لذا، عندما يكون ذلك ممكنًا، يجب استخدام التسمية بدلاً من مربع النص. على سبيل المثال، عندما يحتاج عنصر التحكم المخفي في النموذج إلى الاحتفاظ بالنص، يكون استخدام التسميات أكثر فعالية.
2. استخدم ملفات القرص أو الموارد والوحدات التنظيمية
البيانات الموضوعة مباشرة في التطبيق في وقت التصميم (مثل السلاسل والقيم الحرفية في الخصائص أو التعليمات البرمجية) ستزيد من الذاكرة التي يشغلها التطبيق في وقت التشغيل. يؤدي تحميل البيانات من ملفات القرص أو الموارد في وقت التشغيل إلى تقليل استخدام الذاكرة. يعد هذا مفيدًا بشكل خاص للصور النقطية والسلاسل الكبيرة. تتكون ملفات الموارد في الواقع من سلسلة من السلاسل المستقلة أو الصور النقطية أو العناصر الأخرى، ولكل منها معرف فريد. يمكن إنشاء ملفات الموارد باستخدام محرر نصوص ومترجم موارد مماثل لتلك المتوفرة في Microsoft Visual C. ملفات الموارد المترجمة لها ملحق .res.
يقوم Visual Basic بتحميل الوحدات النمطية فقط عند الحاجة إليها، أي أنه عندما يستدعي التعليمات البرمجية إجراءً في الوحدة النمطية، يتم تحميل الوحدة النمطية في الذاكرة. إذا لم يتم استدعاء إجراء في وحدة نمطية معينة مطلقًا، فلن يقوم Visual Basic بتحميل الوحدة النمطية أبدًا. ولذلك، حاول وضع الإجراءات ذات الصلة في نفس الوحدة النمطية والسماح لـ Visual Basic بتحميل الوحدة النمطية فقط عند الحاجة.
3. فكر في استبدال نوع البيانات المتغير
يعد نوع البيانات المتغير مرنًا للغاية في الاستخدام، ولكنه يستهلك ذاكرة أكبر من أنواع البيانات الأخرى. عندما تريد ضغط المساحة الزائدة في التطبيق الخاص بك، يجب أن تفكر في استبدال المتغيرات المتغيرة بأنواع بيانات أخرى، وخاصة استبدال صفائف المتغيرات المتغيرة.
يحتل كل متغير 16 بايت، بينما يحتل العدد الصحيح 2 بايت والمزدوج يحتل 8 بايت. تشغل متغيرات السلسلة ذات الطول المتغير 4 بايت بالإضافة إلى بايت واحد لكل حرف في السلسلة، ومع ذلك، فإن كل متغير يحتوي على سلسلة يستهلك 16 بايت بالإضافة إلى بايت واحد لكل حرف في السلسلة. نظرًا لكبر حجمها، تكون المتغيرات المتغيرة مزعجة بشكل خاص عند استخدامها كمتغيرات محلية أو وسيطات للإجراءات لأنها تستهلك مساحة المكدس بسرعة كبيرة. ولكن في بعض الحالات، يؤدي استخدام أنواع بيانات أخرى بدلاً من Variant إلى تقليل المرونة، ويجب إضافة المزيد من التعليمات البرمجية لتعويض المرونة المفقودة. والنتيجة هي عدم وجود انخفاض حقيقي في الحجم.
4. استخدم المصفوفات الديناميكية واستعادة الذاكرة عند الحذف
استخدم المصفوفات الديناميكية بدلاً من المصفوفات الثابتة. عندما لا تكون هناك حاجة إلى بيانات المصفوفة الديناميكية، استخدم Erase أو ReDimPReserve لتجاهل البيانات غير الضرورية واستعادة الذاكرة المستخدمة بواسطة المصفوفة. على سبيل المثال، استخدم التعليمة البرمجية التالية لاستعادة المساحة المستخدمة بواسطة مصفوفة ديناميكية:
هنا، يقوم Erase بحذف المصفوفة تمامًا، بينما يقوم ReDimPreserve فقط بتقصير المصفوفة دون فقدان محتوياتها:
لا يؤدي حذف مصفوفة ذات حجم ثابت إلى استعادة المساحة التي تشغلها المصفوفة، بل يقوم ببساطة بمسح القيمة من كل عنصر في المصفوفة. إذا كانت العناصر عبارة عن سلاسل، أو متغيرات تحتوي على سلاسل أو مصفوفات، فإن حذف المصفوفة يؤدي إلى استعادة الذاكرة التي تشغلها تلك السلاسل أو المتغيرات، وليس الذاكرة التي يشغلها المصفوفة نفسها.
5. استعادة المساحة المستخدمة بواسطة متغيرات السلسلة أو الكائن
عندما تنتهي العملية، يمكن استعادة المساحة المستخدمة بواسطة متغيرات الصفيف والسلسلة المحلية (غير الثابتة) تلقائيًا. ومع ذلك، تظل متغيرات السلسلة والمصفوفة العامة وعلى مستوى الوحدة النمطية موجودة حتى نهاية البرنامج بأكمله. إذا كنت تريد أن يكون تطبيقك صغيرًا قدر الإمكان، فيجب عليك استعادة المساحة التي تستخدمها هذه المتغيرات قدر الإمكان. يؤدي تعيين سلسلة ذات طول صفري لمتغير سلسلة إلى استعادة مساحتها:
وبالمثل، يؤدي تعيين متغير كائن إلى لا شيء إلى استعادة بعض (وليس كل) المساحة التي يستخدمها الكائن. على سبيل المثال، لحذف متغير كائن النموذج:
حتى إذا كنت لا تستخدم متغيرات نموذج صريحة، فيجب أن تكون حريصًا على إلغاء تحميل النماذج التي لم تعد مستخدمة، بدلاً من إخفائها ببساطة.
6. القضاء على التعليمات البرمجية الميتة والمتغيرات عديمة الفائدة
أثناء قيامك بتطوير تطبيقك وتعديله، قد يتبقى لديك تعليمات برمجية ميتة - وهي عملية كاملة في التعليمات البرمجية الخاصة بك لا يتم استدعاؤها في أي مكان. قد يكون هناك أيضًا بعض المتغيرات غير المستخدمة المعلنة. على الرغم من أن Visual Basic يمكنه بالفعل حذف الثوابت غير المفيدة عند إنشاء ملفات .exe، إلا أنه لا يمكنه حذف المتغيرات غير المفيدة والتعليمات البرمجية الميتة. كن حذرًا عند مراجعة التعليمات البرمجية الخاصة بك للعثور على المتغيرات غير المفيدة والتعليمات البرمجية الميتة وإزالتها. على سبيل المثال، يتم تجاهل عبارة Debug.Print عند تشغيل .exe، ولكنها تظهر غالبًا في ملفات .exe.
عند إنشاء ملف .exe، لا يتم تجميع عبارات Debug.Print التي تحتوي على سلاسل ومتغيرات كمعلمات. ولكن بالنسبة لعبارة Debug.Print التي تحتوي على دالة كمعلمة، يتم تجاهلها من قبل المترجم، ويتم ترجمة الدالة. لذلك أثناء تشغيل التطبيق، يتم استدعاء الدالة ولكن يتم تجاهل القيمة المرجعة. لأنه في ملف .exe، عندما تظهر الوظيفة كمعلمة لـ Debug.Print، فإنها ستشغل مساحة ووقت دورة وحدة المعالجة المركزية، لذلك من الأفضل حذف هذه العبارات قبل إنشاء ملف exe.
استخدم الأمر "بحث" في قائمة "تحرير" للبحث عن مراجع لمتغير معين. أو عندما تحتوي كل وحدة على عبارة OptionExplicit، يمكنك معرفة ما إذا كان المتغير مستخدمًا بسرعة عن طريق حذف تعريف المتغير أو التعليق عليه وتشغيل التطبيق. إذا تم استخدام هذا المتغير، فسيحدث خطأ في Visual Basic. في حالة عدم حدوث أي خطأ، لا يتم استخدام المتغير. ->