TargetedPatchingOptOut:“性能对于跨NGen图像边界内联至关重要”?

问题描述

| 使用反射器检查了一些框架类,并注意到许多方法属性具有以下属性
[TargetedPatchingOptOut(\"Performance critical to inline across NGen image boundaries\")]
我很确定我在其他地方也看到了以上评论,但从未进行过跟进。 有人可以告诉我这在C#和任何其他上下文中意味着什么吗?     

解决方法

它告诉NGen,即使在不同的程序集中,也可以内联它所应用的方法。 例如:
String.Equals
[TargetedPatchingOptOut]
您编写一个调用
String.Equals
的程序 您在此程序上运行NGen可获得最佳性能 NGen将内联“ 1”调用,将方法调用指令替换为方法中的实际代码。 方法调用(略)昂贵,因此对于经常调用的方法而言,这可以提高性能。 但是,如果Microsoft在ѭ1中发现一个安全漏洞,则他们不能仅更新
mscorlib.dll
,因为这不会影响您刚刚由NGen进行的程序集。 (因为它具有未引用
String.Equals
的原始机器代码)。 我假设如果确实要发生这种情况,则此安全更新将清除NGen存储。 请注意,此属性仅在.NET Framework程序集中有用。您不需要自己的。您可以在这里找到关于此的更多信息:https://stackoverflow.com/a/14982340/631802