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

问题描述 投票:0回答:1

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

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

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

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

c# .net ngen
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.