سؤال

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

هل هناك أي التحسينات التي يمكن أن تنطبق على بلدي الجمعيات لجعلها أسرع في التحميل دون إشراك GAC أو Ngen و هذه لا تتوفر ClickOnce?

هذا هو WinForms 2.0 المشروع.يمكنني الترقية إلى 3.5 ولكن هذا الحد من قاعدة المستخدمين.لدي .NET Framework 3.5 تثبيت على الجهاز الخاص بي.

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

المحلول

لقد خلق صغير جدا .exe يظهر شاشة البداية في اسرع وقت ممكن.بعد ذلك تهيئة كل شيء.

JIT-مترجم بتحميل وحدات تسمى من الطريقة التي يتم jitted.لذلك عليك أن تأخذ الرعاية أن الأسلوب الذي يظهر على شاشة البداية, لا أساليب الدعوة في الوحدات التي لا تريد تحميلها حتى الآن.

على سبيل المثال:

internal sealed class Startup {

    // Call Startup.Run() from Program.Main to start the application
    internal void Run() {
        this.ShowSplash();
        this.ContinueStartup();
    }

    private void ShowSplash() {
        _splash = new Splash();
        _splash.Show();
        Application.DoEvents();
    }

    [MethodImpl(MethodImplOptions.NoInlining)]
    private void ContinueStartup() {
        // Do the startup here
    }
}

فإن [MethodImpl(MethodImplOptions.NoInlining)] هو مطلوب حتى ContinueStartup (طريقة) لا تحصل على inlined قبل jit, لأن ذلك سوف يتسبب في الوحدات النمطية التي يمكن تحميلها في وقت مبكر جدا.

نصائح أخرى

يمكنك استخدام ILMerge إلى دمج كل ما تبذلونه من الجمعيات في ملف واحد.القراءة من ملف واحد في الذاكرة هو أسرع ثم القراءة 10 ملفات.على الرغم من أنني أشك في أنك سوف ترى تحسن حقيقي في سرعة تحميل هناك.

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

هل يمكنك أن تصف كيف العديد من الجمعيات لديك ؟

.صافي الأحمال الجمعية على الطاير عندما كنت في حاجة إليها.يمكنك أن تقرر تقسيم التطبيق الخاص بك في العديد من الجمعيات.الجمعيات يجب أن تقسم عن طريق:نشر استراتيجية الأمن والأداء.معظم التطبيقات مقسمة على 3 هيكل الطبقات (UI, والأعمال التجارية, البيانات).

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