c# .net compiler-construction ngen

c# - TargetedPatchingOptOut: "¿Desempeño crítico para en línea a través de los límites de la imagen NGen"?



.net compiler-construction (1)

Le dice a NGen que está bien alinear el método al que se aplica incluso en un ensamblaje diferente.

Por ejemplo:

  • String.Equals tiene [TargetedPatchingOptOut]
  • Usted escribe un programa que llama String.Equals
  • NGen en este programa para un rendimiento máximo
  • NGen String.Equals llamada String.Equals , reemplazando la instrucción de llamada de método con el código real en el método.
    Las llamadas a métodos son (un poco) caras, por lo que se trata de un aumento del rendimiento para los métodos llamados con frecuencia.

Sin embargo, si Microsoft encuentra un agujero de seguridad en String.Equals , no puede simplemente actualizar mscorlib.dll , porque eso no afectará al ensamblado que acaba de generar NGen. (Dado que tiene código de máquina sin referencia a String.Equals ).
Supongo que si eso realmente sucediera, la actualización de seguridad limpiaría la tienda NGen.

Tenga en cuenta que este atributo solo es útil en los ensamblados de .NET Framework. No lo necesitas en tu propio. Puede encontrar más información al respecto aquí: https://stackoverflow.com/a/14982340/631802

He estado revisando algunas clases de framework usando el reflector y he notado que varios de los métodos y propiedades tienen el siguiente atributo

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

Estoy bastante seguro de que también he visto el comentario anterior en otro lugar y nunca lo he seguido.

¿Podría alguien decirme qué significa esto en C # y en cualquier otro contexto?