使用反射器浏览一些框架类,并注意到许多方法和属性具有以下属性
[TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")]
我很确定我也在其他地方看到过上述评论,但从未跟进过。
有人可以告诉我这在 C# 和任何其他上下文中意味着什么吗?
它告诉 NGen 即使在不同的程序集中也可以内联其所应用的方法。
例如:
-
String.Equals
has [TargetedPatchingOptOut]
- 你编写一个程序调用
String.Equals
- You run NGen http://msdn.microsoft.com/en-us/library/6t9t5wcf%28v=VS.100%29.aspx在此计划中获得最大性能
- NGen 将内联
String.Equals
call,将方法调用指令替换为方法中的实际代码。
方法调用(稍微)昂贵,因此这对于频繁调用的方法来说是性能提升。
但是,如果微软发现安全漏洞String.Equals
,他们不能只是更新mscorlib.dll
,因为这不会影响您刚刚 NGen 的程序集。 (因为它具有未引用的原始机器代码String.Equals
).
我认为如果这种情况真的发生,安全更新将清除 NGen 存储。
请注意,此属性仅在 .NET Framework 程序集中有用。你自己不需要它。您可以在这里找到更多相关信息:https://stackoverflow.com/a/14982340/631802 https://stackoverflow.com/a/14982340/631802
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)