[C#] TargetedPatchingOptOut : “NGen 이미지 경계를 가로 질러 인라인하는 데 중요한 성능”?

리플렉터를 사용하여 일부 프레임 워크 클래스를 살펴보고 많은 메소드와 속성에 다음과 같은 속성이 있음을 알았습니다.

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

나는 또한 위의 주석을 다른 곳에서 보았고 결코 따라 한 적이 없다고 확신합니다.

누군가 C # 및 다른 컨텍스트에서 이것이 무엇을 의미하는지 말해 줄 수 있습니까?



답변

NGen에 다른 어셈블리에서도 적용되는 메소드를 인라인해도된다고 알립니다.

예를 들면 다음과 같습니다.

  • String.Equals 있다 [TargetedPatchingOptOut]
  • 당신은 호출하는 프로그램을 작성 String.Equals
  • 최대 성능을 위해이 프로그램에서 NGen 을 실행 합니다.
  • NGen은 String.Equals메소드 호출 명령어를 메소드의 실제 코드로 대체 하여 호출 을 인라인합니다 .
    메소드 호출은 (약간) 비싸므로 자주 호출되는 메소드의 성능 향상입니다.

그러나 Microsoft 가의 보안 취약점을 발견하면 String.Equals업데이트 할 수 없습니다 mscorlib.dll. NGen’d의 어셈블리에는 영향을 미치지 않기 때문입니다. (참조하지 않고 원시 기계 코드가 있으므로 String.Equals).
이것이 실제로 발생한다면 보안 업데이트는 NGen 저장소를 지우는 것으로 가정합니다.

이 특성은 .NET Framework 어셈블리에서만 유용합니다. 당신은 자신의 필요가 없습니다. 이에 대한 자세한 정보는 https://stackoverflow.com/a/14982340/631802 에서 확인할 수 있습니다.


답변