2011-05-24 6 views
137

vais dans certaines classes cadres à l'aide réflecteur et remarqué un certain nombre de méthodes et propriétés ont l'attribut suivantTargetedPatchingOptOut: "Performances critiques pour l'intégration des limites d'image NGen"?

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

Je suis sûr que je l'ai aussi vu le commentaire ci-dessus ailleurs et jamais suivi vers le haut.

Quelqu'un pourrait-il me dire ce que cela signifie dans le C# et dans tout autre contexte?

Répondre

173

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

+5

Excellente réponse, merci. – crypted

+18

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

+3

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

Questions connexes