리플렉터를 사용하여 일부 프레임 워크 클래스를 살펴보고 많은 메소드와 속성에 다음과 같은 속성이 있음을 알았습니다.
[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 에서 확인할 수 있습니다.