2013-12-16 4 views

उत्तर

23

.NET प्लेटफ़ॉर्म पर कोड निष्पादन के लिए, Common Intermediate Language (सीआईएल) प्रतिनिधित्व को मशीन कोड में अनुवादित करने की आवश्यकता है। यदि यह निष्पादन से ठीक पहले होता है तो इसे जेआईटी (जस्ट इन टाइम) संकलन के रूप में जाना जाता है। जेआईटी का आउटपुट जारी नहीं है इसलिए आपके प्रबंधित आवेदन को प्रत्येक लॉन्च के लिए जेआईटी के माध्यम से जाना होगा।

वैकल्पिक रूप से, आप पूर्व संकलन का उपयोग स्टार्टअप JIT संकलन के साथ संबंधित ओवरहेड्स कम करने के लिए कर सकते हैं। एनजीएन प्री-संकलन करता है और मूल छवियों को देशी छवि कैश में रखता है। फिर अनुप्रयोग मूल छवियों के साथ चल सकते हैं और कम जेआईटी संकलन ओवरहेड के कारण तेजी से स्टार्टअप समय का अनुभव कर सकते हैं। प्रारंभ में, एनजीन एक इंस्टाल-टाइम तकनीक थी, डेवलपर्स ने इंस्टॉलेशन इंस्टॉलर्स को इंस्टॉलेशन समय के दौरान प्री-संकलन ट्रिगर करने के लिए एनजेन कमांड जारी किए। अधिक जानकारी के लिए, http://msdn.microsoft.com/en-us/magazine/cc163808.aspx देखें। यह आलेख एक उदाहरण अनुप्रयोग प्रदान करता है जो एनजेन का लाभ उठाता है।

विंडोज   8 (.NET 4.5), एक नई NGen मोड के साथ: "ऑटो NGen" शुरू किया गया है। असल में, .NET रनटाइम प्रबंधित अनुप्रयोगों के लिए उपयोग लॉग उत्पन्न करता है। जब सिस्टम निष्क्रिय होता है, तो स्वचालित रखरखाव कार्य पृष्ठभूमि में चलता है और मूल छवियां उत्पन्न करता है। इस तरह डेवलपर्स को अब स्पष्ट रूप से एनजीएन से निपटना नहीं है। ध्यान दें कि यह सुविधा केवल नेट 4.5+ अनुप्रयोग जो विंडो स्टोर को लक्षित या GAC का उपयोग के लिए सक्षम है। यहाँ एक MSDN पेज कि सहायक हो सकता है है: http://msdn.microsoft.com/en-us/library/hh691758(v=vs.110).aspx

और यह NGen और संबंधित तकनीकों की उच्च-स्तरीय अवलोकन है: Got a need for speed? .NET applications start faster

अन्त में, नेट ढांचे के लिए खुद को बेहतर प्रदर्शन के लिए NGen का उपयोग पुस्तकालय। जब .NET ढांचे की सेवा की जाती है, तो कुछ मूल छवियां अमान्य हो जाती हैं। फिर एनजेन को अवैध देशी छवियों को पुन: उत्पन्न करने के लिए चलाने की आवश्यकता है। यह स्वचालित रूप से .NET रनटाइम ऑप्टिमाइज़ेशन सेवा के माध्यम से किया जाता है जो निष्क्रिय समय के दौरान चलता है।

+2

पहले दो एमएसडीएन लिंक टूटा हुआ है। –

2

प्रति MSDN:

मूल छवि जेनरेटर (Ngen.exe) एक उपकरण है जो कामयाब अनुप्रयोगों के प्रदर्शन को बेहतर बनाता है है। Ngen.exe देशी छवियों को बनाता है, जो संकलित प्रोसेसर-विशिष्ट मशीन कोड वाली फ़ाइलें हैं, और उन्हें स्थानीय कंप्यूटर पर मूल छवि कैश में स्थापित करता है। रनटाइम मूल असेंबली संकलित करने के लिए बस-इन-टाइम (जेआईटी) कंपाइलर का उपयोग करने के बजाय कैश से मूल छवियों का उपयोग कर सकता है।

मैंने इंस्टॉलेशन के दौरान अतीत में एनजीएनएन का उपयोग किया है ताकि सॉफ्टवेयर तेजी से शुरू हो सके।

1

NGen (मूल छवि जनरेटर) मूल रूप से कंप्यूटर के लिए नेट कोड में .NET बाइट कोड (CIL) संकलित करता है। लाभ यह है कि यह देखते हुए कि आप देशी हर बार करने के लिए कोड संकलन नहीं कर रहे हैं, आप इसे चलाने के लिए या यह की जरूरत है, लेकिन आप इसे सिर्फ एक बार करते हैं, आवेदन शुरू होता है और तेजी से चलाते हैं। यदि आप अधिक जानकारी चाहते हैं तो समय संकलन के आगे जेआईटी बनाम के लाभों के बारे में बहुत सारे संसाधन हैं (जो एनजीएन करता है)।

+0

आप की तरह अधिक जानकारी जोड़ सकते हैं क्या वे परिदृश्य हैं जहां प्रीजिट संकलन होता है जो वास्तव में सहायक होगा। – Dhiren

+0

अधिकतर, जब आप एक .NET Framework अद्यतन स्थापित करते हैं (.NET Framework ngened है) और जब आप GAC पर एक असेंबली डालते हैं। – Rafael

4

.NET compilation flow

एक .NET संकलक संकलित जब C# या VB।नेट कोड यह आधा उन्हें संकलित करता है और CIL कोड बनाता है। जब आप इस अर्ध-संकलित .NET EXE फ़ाइल को चलाते हैं तो जेआईटी पृष्ठभूमि में चलता है और आधा सीआईएल कोड पूर्ण मशीन भाषा में संकलित करता है। इस मोड को सामान्य जेआईटी कहा जाता है।

आप यह भी कह सकते हैं कि आप एक पूर्ण संकलित EXE फ़ाइल चलाकर रनटाइम संकलन नहीं चाहते हैं। यह संकलन negen.exe का उपयोग करके किया जाता है। इस परिदृश्य में जेआईटी रनटाइम पर भाग नहीं लेता है। इसे प्री-जेआईटी मोड कहा जाता है।

आप देखना चाहते हैं कि वे प्रदर्शन को प्रभावित कर आप इस यूट्यूब वीडियो जो संकलन के सामान्य-JIT और पूर्व JIT मोड दर्शाता देख सकते हैं चाहते हैं:

Explain JIT, Ngen.exe, Pre-jit, Normal-Jit and Econo-Jit.? (.NET interview questions)

संबंधित मुद्दे