问题描述
|
使用反射器检查了一些框架类,并注意到许多方法和属性具有以下属性
[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