काम पर हम उपयोगकर्ता इंटरफ़ेस के लिए DevExpress का उपयोग करते हैं। पहली बार DevExpress नियंत्रण को नियोजित करने वाला एक फॉर्म खोला जाता है, वहां एक लंबा विराम होता है (कभी-कभी कुछ ग्राहकों पर 15-20 सेकंड)। विजुअल स्टूडियो में मैं देख सकता हूं कि उस चरण के दौरान कई असेंबली लोड की जा रही हैं। क्या लॉगिन स्क्रीन से पहले उदाहरण के लिए उत्पन्न होने वाले धागे पर पृष्ठभूमि में ऐपडोमेन में असेंबली को प्रीलोड करने का कोई तरीका है?प्रीलोडिंग असेंबली
उत्तर
असेंबली पर एक नज़र डालें। लोड विधियां।
Gero
हालांकि यह अपने उपयोगकर्ताओं को बाध्य हमेशा शुरू अप पर कि हिट लेने के लिए होगा।
आम तौर पर यह एक बुरा विचार है (यदि आपके पास हिट है तो कम से कम इसे तब तक रोक दें जब तक आपको वास्तव में इसकी आवश्यकता न हो)। एक मामला जहां यह मदद कर सकता है, लोड को ट्रिगर करना है यदि पर निकट भविष्य में कार्यक्षमता का उपयोग करने के लिए एक मजबूत मौका है लेकिन सिस्टम अन्यथा निष्क्रिय है। हालांकि यह सही करने के लिए बहुत मुश्किल हो सकता है।
आप देख सकते हैं कि लोड की गई असेंबली में से कोई भी आपके नियंत्रण में है और जीएसी में है। यदि ऐसा है तो आप उन्हें एनजी कर सकते हैं जो आपके यूआई के इस पहलू के स्टार्टअप समय पर महत्वपूर्ण प्रभाव डाल सकता है।
मुझे यकीन नहीं है, लेकिन मुझे लगता है कि असेंबली की वास्तविक लोडिंग समय-समय पर हिस्सा नहीं है - लेकिन शायद कोड पथ के जेआईटी संकलन। शायद आप ngen को देखना चाहते हैं। हो सकता है कि यह प्रदर्शन समस्या दूर हो जाए। लेकिन उस उपकरण के प्रभाव को समझना सुनिश्चित करें।
लिंक: - http://msdn.microsoft.com/en-us/library/6t9t5wcf.aspx - http://msdn.microsoft.com/en-us/magazine/cc163610.aspx
रोकथाम के दौरान CPU उपयोग बहुत कम है। – Rauhotz
हम्म, मैं वैसे भी ngen के साथ precompiling करने की कोशिश करेंगे। वे बहुत अनुकूलन छोड़ देते हैं। शायद स्टार्टअप लागत दूर हो जाती है। –
यह सीपीयू उपयोग इतना अतिरिक्त डिस्क के रूप में इतना आवश्यक नहीं है IO की आवश्यकता है। – ShuggyCoUk
एक अन्य विकल्प के बजाय हाथ से ऐसा करने का asynchronious विधानसभाओं लोड करने के लिए JIT मजबूर करने के लिए है। यह चाल बस नियंत्रण के निर्माता को कॉल करना है, इसलिए जिट जानता है कि उसे उस विशेष कोड पथ को संकलित करना शुरू करना है। आम तौर पर यह सभी निर्भर असेंबली लोड करने के लिए मजबूर करता है। बस कोशिश करने के द्वारा कन्स्ट्रक्टर के कॉल को घेरना सुनिश्चित करें।
कैसे करना है कि loadtime पर का एक उदाहरण:
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
PreJitControls();
Application.Run(new Form1());
}
private static void PreJitControls()
{
ThreadPool.QueueUserWorkItem((t) =>
{
Thread.Sleep(1000); // Or whatever reasonable amount of time
try
{
AssemblyPullingControl1 c = new AssemblyPullingControl1();
}
catch (Exception) { }
try
{
AssemblyPullingControl2 c = new AssemblyPullingControl2();
}
catch (Exception) { }
});
}
}
लेकिन यदि पूर्व लोड हो रहा है करने के लिए एक बेहतर समय है कि आप भी लॉगिन फार्म के निर्माता में इसी तरह कुछ कर सकते हैं,। बस PreJitControls विधि को लॉगिन फॉर्म में ले जाएं और इसे कन्स्ट्रक्टर से कॉल करें।
यदि आप अपनी असेंबली तेजी से प्राप्त करने की कोशिश कर रहे हैं, तो अपने कोड के लिए एनजीएनएन पर नज़र डालें। पृष्ठभूमि में पूर्व जेआईटी सब कुछ। यह प्रो और कॉन है हालांकि आपका ऐप क्या कर रहा है इसके आधार पर।
- 1. आईओएस: AVPlayer वीडियो प्रीलोडिंग
- 2. छवियां गैलरी, प्रीलोडिंग बनाम AJAX
- 3. छवि प्रीलोडिंग अप्रभावी क्यों है?
- 4. जार स्टार्टअप पर जावा क्लास/लाइब्रेरी प्रीलोडिंग?
- 5. जावास्क्रिप्ट प्रीलोडिंग कैसे काम करता है?
- 6. मेवेन असेंबली: असेंबली
- 7. असेंबली
- 8. असेंबली
- 9. असेंबली
- 10. असेंबली
- 11. असेंबली असेंबली भाषा स्पेगेटी कोड
- 12. मेवेन-असेंबली प्लगइन - नेस्टेड असेंबली कैसे बनाएं
- 13. सी # असेंबली। लोड बनाम असेंबली। रिफ्लेक्शनऑनलीलोड
- 14. असेंबली फ़ाइल नामकरण और असेंबली। लोडफाइल
- 15. मेवेन असेंबली - असेंबली पढ़ने में त्रुटि
- 16. मेवेन असेंबली प्लगइन - बनाई गई असेंबली
- 17. सी # असेंबली, असेंबली में क्या है?
- 18. कारण "सिल्वरलाइट असेंबली" सामान्य ".NET असेंबली
- 19. अभिव्यक्ति_होस्ट असेंबली
- 20. x86 असेंबली
- 21. असेंबली संस्करण
- 22. असेंबली संस्करण?
- 23. .NET असेंबली
- 24. असेंबली क्लेनअप
- 25. एसबीटी-असेंबली
- 26. x86 असेंबली
- 27. असेंबली संस्करण
- 28. एक असेंबली
- 29. असेंबली - सीएमपी
- 30. बाहरी असेंबली
मैं पृष्ठभूमि थ्रेड में असेंबली लोड करने की योजना बना रहा हूं, जबकि उपयोगकर्ता अपना उपयोगकर्ता नाम और पासवर्ड टाइप करता है, इसलिए स्टार्टअप पर कोई उल्लेखनीय हिट नहीं होगी। – Rauhotz
जब तक: 1) डीएलएस * हमेशा * आवश्यक 2) लोडिंग समय लॉग ऑन करने के समय से बहुत करीब या कम होता है। यदि ये दोनों सत्य हैं तो यह उपयोगी हो सकता है ... – ShuggyCoUk