سؤال

ماذا تفعل لزيادة سرعة بدء التشغيل (أو لتقليل وقت بدء التشغيل) من تطبيق Delphi الخاص بك؟

بخلاف التطبيق المحدد، هل هناك خدعة قياسية تعمل دائما؟

ملاحظة: أنا لا أتحدث عن الخوارزميات السريعة أو الإعجابات. فقط زيادة الأداء عند بدء التشغيل، من حيث السرعة.

هل كانت مفيدة؟

المحلول

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

أظهرت التجارب التي أجريت أنه إذا كنت تأخذ نفس التطبيق بالضبط، فما عليك سوى إضافة إشعار بدء التشغيل إليها، فإن المستخدمين ينظرون في الواقع إلى هذا التطبيق باعتباره أسرع!

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

علاوة على ذلك، لا تنشئ تلقائيا كل النماذج الخاصة بك. وبعد خلقها ديناميكاليا كما تحتاج لهم.

نصائح أخرى

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

حسنا، كما اقترح أرجالاتير أنني أغير تعليقي إلى إجابة منفصلة:

كملحق لإجابة "عدم إنشاء النماذج التلقائية" (والتي ستكون فعالة للغاية من خلال نفسها) أقترح تأخير اتصالات فتحات بقواعد البيانات والإنترنت وخوادم COM وأي جهاز محيطي حتى تحتاجه أولا.

تحدث ثلاثة أشياء قبل إظهار النموذج الخاص بك:

  1. يتم تنفيذ جميع كتل "التهيئة" في جميع الوحدات في ترتيب "لأول مرة".
  2. يتم إنشاء جميع النماذج التي تم إنشاؤها تلقائيا (تم تحميلها من ملفات DFM ويتم استدعاء معالج OnCreate)
  3. يتم عرض النموذج الرئيسي (يتم استدعاء Onshow و OnActivate).

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

من الممكن أيضا أن يستغرق أحد كتل التهيئة بعض الوقت لتنفيذه. للتحقق من ذلك، ضع نقطة توقف في السطر الأول من البرنامج الخاص بك (الرئيسية "ابدأ .. أدخل" في ملف .dpr) وبدء البرنامج. سيتم تنفيذ جميع كتلة التهيئة ثم ستتوقف نقطة التوقف عن التنفيذ.

بطريقة مماثلة يمكنك الخطوة (F8) عبر البرنامج الرئيسي - سترى كم من الوقت يستغرق إنشاء كل نموذج تم إنشاؤه تلقائيا.

عرض شاشة البداية، لذلك لن يلاحظ الناس أوقات بدء التشغيل الطويلة :).

أسرع رمز - إنه الرمز، الذي لا يعمل أبدا. واضح جدا، حقا؛)

يمكن نشر التطبيق (وعادة ما يفعل ذلك!) يحدث بطرق قد لا ينظر فيه المطور. في تجربتي، يولد هذا مشكلات أداء أكثر من أي شخص يريده.

تعد Bootleneck شائعة الوصول إلى الملفات - ملف التكوين، ملف INI المطلوب لإطلاق التطبيق يمكن أن يؤدي ذلك بشكل جيد على جهاز مطور، ولكن أداء سحق في مواقف النشر المختلفة. وبالمثل، يمكن أن تعرقل تسجيل التطبيقات الأداء - سواء لأسباب وصول الملفات أو نمو ملف السجل.

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

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

قد يجادل المطور بأن هذه هي مشاكل التثبيت، خارج نطاق قلقها. عادة ما أرى العديد من الدورات من تحليل المطور في هذا النوع من القضية قبل تحديدها ك "مشكلة البنية التحتية".

  • أول شيء يجب القيام به هو مسح قائمة النماذج التي تم إنشاؤها تلقائيا (ابحث عن خيارات المشروع). قم بإنشاء نماذج على الطاير عند الحاجة، خاصة إذا كان التطبيق يستخدم اتصال قاعدة البيانات (DataModule) أو النماذج التي تتضمن الاستخدامات الثقيلة للضوابط.
  • النظر في استخدام الميراث النموذجي أيضا لتقليل حجم EXE (تم تحذير استخدام الموارد)
  • تقليل عدد النماذج ودمج وظائف مماثلة أو ذات صلة في نموذج واحد

ضع مهام التشغيل الطويلة (اتصالات قاعدة البيانات المفتوحة، الاتصال بخادم التطبيقات، إلخ) التي يجب تنفيذها عند بدء التشغيل في مؤشر ترابط. يتم تعطيل أي وظيفة تعتمد على هذه المهام حتى يتم الموضوع.

انها قليلا من الغش، رغم ذلك. يأتي النموذج الرئيسي على الفور، لكنك تمنح فقط مظهر وقت بدء التشغيل الأسرع.

ضغط الملف التنفيذي الخاص بك وأي dlls باستخدام شيء مثل aspack. أو UPX.. وبعد وقت إلغاء الضغط أكثر من تكوينه من خلال وقت التحميل الأسرع.

تم استخدام UPX ك مثال كيفية تحميل Firefox بشكل أسرع.

لاحظ أن هناك أسفل المبيدات لإحضار الضغط.

هذا هو فقط من أجل IDE، لكن كريس هيسيك قدم نشر مدونة حول زيادة أداء بدء التشغيل تحت مصحح الأخطاء.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top