c# - TargetedPatchingOptOut : "Performance critical to inline across NGen image boundaries"?

标签 c# .net compiler-construction ngen

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

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

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

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

最佳答案

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

例如:

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

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

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

关于c# - TargetedPatchingOptOut : "Performance critical to inline across NGen image boundaries"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6109745/

相关文章:

c# - 内置整型值类型的位宽是固定的吗?

.net - OleDB 与 SQLClient 相比有何优缺点?

c++ - 证明两个代码块在功能上是相同的?

c++ - Visual Studio for C++ 使用的编译器?

c# - 如何在 Unity Test Runner 中测试 Unity 协程

c# - 如何找到 Entity Framework 对每个传入请求进行的数据库调用次数?

c# - ASP.NET 5 类库可以面向 .NET 3.5 吗?

C 程序与共享库链接而不设置 LD_LIBRARY_PATH

c# - 如何使用 c# winform 从 datagridview 中编辑的单元格获取数据?

c# - 当我将属性添加到参数时,.NET Web 服务会中断吗?