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