TargetedPatchingOptOut:“在NGen图像边界上内联的性能至关重要”?
经历了一些使用reflection器的框架类,并注意到一些方法和属性具有以下属性
[TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")]
我很确定我也在别的地方看过上面的评论,从来没有跟上过。
有人可以告诉我这是什么意思,在C#和任何其他上下文?
它告诉NGEN,即使在不同的assembly中,也可以将其应用到的方法内联。
例如:
-
String.Equals
有[TargetedPatchingOptOut]
- 你写一个调用
String.Equals
的程序 - 你在这个程序上运行NGEN ,以获得最佳性能
- NGen将内联
String.Equals
调用,将方法调用指令replace为方法中的实际代码。
方法调用(稍微)昂贵,所以这是一个经常调用方法的性能提升。
但是,如果Microsoft在String.Equals
发现安全漏洞,则不能仅更新mscorlib.dll
,因为这不会影响刚刚删除的程序集。 (因为它有没有引用String.Equals
原始机器码)。
我假设如果真的发生这种情况,安全更新将清除NGEN商店。
请注意,此属性仅在.NET Framework程序集中有用。 你自己并不需要它。 你可以在这里find更多的信息: https : //stackoverflow.com/a/14982340/631802