2011-05-24 28 views
137

परावर्तक का उपयोग कर कुछ फ्रेमवर्क वर्गों के माध्यम से चल रहा है और तरीकों की एक संख्या देखा और गुण निम्नलिखित विशेषतालक्ष्यित पैचिंगऑप्टऑट: "एनजीएन छवि सीमाओं में इनलाइन करने के लिए महत्वपूर्ण प्रदर्शन"?

[TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")] 

है मैं यकीन है कि मैं भी कहीं और ऊपर टिप्पणी देखा है और कभी नहीं इसे का पालन किया है हूँ।

क्या कोई मुझे बता सकता है कि इसका मतलब सी # और किसी अन्य संदर्भ में क्या है?

उत्तर

173

यह एनजीएन को बताता है कि यह एक अलग असेंबली में भी लागू होने वाली विधि को रेखांकित करना ठीक है।

उदाहरण के लिए:

  • String.Equals[TargetedPatchingOptOut]
  • आप एक प्रोग्राम है जो String.Equals
  • आप NGen अधिकतम प्रदर्शन
  • के लिए इस कार्यक्रम
  • NGen String.Equals कॉल इनलाइन होगा पर चलने कॉल लिखते हैं, की जगह है विधि में वास्तविक कोड के साथ विधि कॉल निर्देश।
    विधि कॉल (थोड़ा) महंगे हैं, इसलिए यह अक्सर तथाकथित विधियों के लिए एक प्रदर्शन बढ़ावा है।

हालांकि, अगर माइक्रोसॉफ्ट String.Equals में एक सुरक्षा छेद पाता है, वे सिर्फ mscorlib.dll अद्यतन नहीं कर सकते, क्योंकि वह विधानसभा है कि आप बस NGen'd प्रभावित नहीं करेगा। (चूंकि इसमें String.Equals संदर्भित किए बिना कच्चे मशीन कोड हैं)।
मुझे लगता है कि अगर वास्तव में ऐसा होता, तो सुरक्षा अद्यतन एनजीएन स्टोर को साफ़ कर देगा।

ध्यान दें कि यह विशेषता केवल .NET Framework असेंबली में उपयोगी है। आपको इसकी आवश्यकता नहीं है। आप यहां इसके बारे में अधिक जानकारी प्राप्त कर सकते हैं: https://stackoverflow.com/a/14982340/631802

+5

उत्कृष्ट उत्तर, धन्यवाद। – crypted

+18

क्या हम इस विशेषता का उपयोग अपने स्वयं के ढांचे में कर सकते हैं? मेरी ओपन सोर्स लाइब्रेरी में बहुत सारे गणित कार्य हैं जो इससे लाभान्वित होंगे ... – MattDavey

+3

यदि .NET ढांचे को मूल देशी छवि फ़ाइलों को पैच किया गया है तो अमान्य और पुनर्निर्मित (कम से कम यह मेरी समझ है) – Motti