Il indique à NGen qu'il est correct d'appliquer la méthode à laquelle il est appliqué même dans un assemblage différent.
Par exemple:
String.Equals
a [TargetedPatchingOptOut]
- Vous écrivez un programme qui appelle
String.Equals
- Vous exécutez NGen sur ce programme pour des performances maximales
- NGen sera inline l'appel
String.Equals
, en remplaçant le instruction d'appel de méthode avec le code réel dans la méthode.
Les appels de méthode sont (légèrement) coûteux, ce qui améliore les performances des méthodes fréquemment appelées.
Cependant, si Microsoft trouve un trou de sécurité dans String.Equals
, ils ne peuvent pas simplement mettre à jour mscorlib.dll
, parce que ce n'affectera pas l'assemblage que vous venez NGen'd. (Comme il a un code machine brut sans référence String.Equals
).
Je suppose que si cela devait arriver, la mise à jour de sécurité effacerait le magasin NGen.
Notez que cet attribut n'est utile que dans les assemblys .NET Framework. Vous n'en avez pas besoin dans le vôtre. Vous pouvez trouver plus d'informations à ce sujet ici: https://stackoverflow.com/a/14982340/631802
Excellente réponse, merci. – crypted
Pouvons-nous utiliser cet attribut dans nos propres frameworks? Ma bibliothèque open source a beaucoup de fonctions mathématiques qui pourraient en bénéficier ... – MattDavey
Si le framework .NET est corrigé, les fichiers d'image natifs existants sont invalidés et recréés (du moins c'est ce que je comprends) – Motti