2008-09-19 12 views
13

मैं सोच रहा था कि अधिक गहन अनुकूलन के लिए प्राथमिकता निर्दिष्ट करके .NET JIT कंपाइलर के व्यवहार को बदलने का कोई तरीका है या नहीं। यह विफल होने पर, यह अच्छा होगा अगर यह किसी प्रकार का प्रोफाइल-निर्देशित अनुकूलन कर सकता है, अगर यह पहले से नहीं है।क्या संकलन समय पर प्रदर्शन के पक्ष में .NET JIT कंपाइलर को बदलने का कोई तरीका है?

उत्तर

19

यह सेट है जब आप अपनी असेंबली संकलित करते हैं।

  • आईएल अनुकूलन
  • JIT मूल कोड गुणवत्ता: वहाँ अनुकूलन के दो प्रकार हैं।

डिफ़ॉल्ट सेटिंग इस

/optimize- /debug- 

इसका मतलब यह है unoptimized आईएल है, और मूल कोड अनुकूलित।

/optimize /debug(+/full/pdbonly) 

इसका मतलब है आईएल unoptimized, और मूल कोड unoptimized (सर्वोत्तम डीबग सेटिंग्स)।

/optimize+ /debug(-/+/full/pdbonly) 

यह आईएल अनुकूलित और मूल कोड अनुकूलित उत्पादन:

अंत में, सबसे तेजी से प्रदर्शन मिलता है।

जब unoptimized आईएल उत्पादन, संकलक पूरे कोड पर एनओपी निर्देश डालेंगे। यह नियंत्रण प्रवाह निर्देशों जैसे ब्रेकपॉइंट्स को सेट फ्लो निर्देशों पर सेट करने के लिए कोड को आसान बनाता है जैसे कि, जबकि, यदि, अन्यथा, कोशिश करें, पकड़ें आदि

सीएलआर कोड को अनुकूलित करने का उल्लेखनीय रूप से अच्छा काम करता है। एक बार एक विधि JIT'ed है, कॉल या कॉलवर्ट निर्देश पर पॉइंटर सीधे देशी कोड पर इंगित किया जाता है।

इसके अतिरिक्त, सीएलआर आपके कोड को JIT'ing करते समय उपलब्ध किसी भी आर्किटेक्चर चाल का लाभ उठाएगा। इसका मतलब यह है कि जेआईटी के माध्यम से चलने वाली एक असेंबली एनजेन (थोड़ा हल्का स्टार्ट अप समय के साथ) द्वारा प्री-संकलित असेंबली की तुलना में तेजी से चलती है, क्योंकि एनजीन सभी प्लेटफार्मों के लिए संकलित होगा, और किसी भी चाल का लाभ नहीं उठाएगा।

+3

+1 अच्छा। आईडीई में वास्तव में आप इन मानों को सेट करते हैं? – Trap

+1

वीएस -2010 (और पुराने संस्करण आईआईआरसी) में, "ऑप्टिमाइज़ कोड" प्रोजेक्ट सेटिंग सक्षम करें, जो रिलीज कॉन्फ़िगरेशन में डिफ़ॉल्ट रूप से चालू है। (यह '/ optimize' के समतुल्य है, जो'/optimize + 'के समतुल्य है।) ध्यान दें कि अनुकूलक [बिल्कुल सही] है (http://stackoverflow.com/questions/10369421/why-does-adding-local -variables-मेक-नेट-कोड-धीमी)। –

+1

कोई प्रति मशीन चाल नहीं है, AFAIK। मुझे बताया गया है कि .NET टीम ने महसूस किया कि जेआईटी अनुकूलक (जो एक बहुत जटिल जानवर है) के कई संस्करणों को बनाए रखना संभावित लाभ की तुलना में बहुत महंगा था। –

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

  • कोई संबंधित समस्या नहीं^_^