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

时间:2011-05-24 11:33:47

标签: c# .net compiler-construction ngen

使用反射器进行了一些框架类,并注意到许多方法和属性具有以下属性

[TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")]

我很确定我在其他地方也看到过上述评论而从未跟进过。

有人可以告诉我这在C#和其他任何背景下意味着什么吗?

1 个答案:

答案 0 :(得分:176)

它告诉NGen,即使在不同的程序集中也可以内联它应用的方法。

例如:

  • String.Equals[TargetedPatchingOptOut]
  • 您编写了一个调用String.Equals
  • 的程序
  • 您在此计划上运行NGen以获得最佳效果
  • NGen将内联String.Equals调用,将方法调用指令替换为方法中的实际代码。
    方法调用(稍微)昂贵,因此这对于经常调用的方法来说是一种性能提升。

但是,如果Microsoft在String.Equals中发现安全漏洞,则他们不能只更新mscorlib.dll,因为这不会影响您只是NGen的程序集。 (因为它有原始机器代码而没有引用String.Equals) 我假设如果实际发生这种情况,安全更新将清除NGen商店。

请注意,此属性仅在.NET Framework程序集中有用。你自己不需要它。您可以在此处找到有关此内容的更多信息:https://stackoverflow.com/a/14982340/631802