使用反射器经历了一些框架类,并注意到许多方法和属性具有以下属性
[TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")]
Run Code Online (Sandbox Code Playgroud)
我很确定我在其他地方也看到了上述评论,从未跟进过.
有人可以告诉我这在C#和其他任何背景下意味着什么?
这里有人曾经使用过ngen吗?哪里?为什么?是否有任何性能提升?何时何地使用它有意义?
因此,当CLR运行时加载.NET程序集时,它会将其编译为机器本机代码.此过程称为JITing.NGen也是将.NET程序集编译为本机代码的过程.我不明白两者有什么区别?
标题说明了一切.我希望有人可以向我解释一下.NET Native带来了什么,我们还没有使用Ngen.exe.
MethodImplAttribute与选项MethodImplOptions.AggressiveInlining和TargetedPatchingOptOut?之间有什么区别?
当我在Google上搜索时,每个人似乎都说(可能)内联方法但没有给出差异.
我在C#可执行文件上做了Ngen.这是成功的,但我无法弄清楚生成的文件在我的PC中的位置.MSDN说它应该在原生图像缓存中,仍然无法弄清楚它在哪里.
编辑:我想对它运行objdump,因此我需要物理文件
EDIT2:我运行ngen的输出是:
C:\Documents and Settings\nmea\My Documents\Visual Studio 2008\Projects\Consol
eApplication4\ConsoleApplication4\bin\Release>ngen install ConsoleApplication4.e
xe
Microsoft (R) CLR Native Image Generator - Version 2.0.50727.3053
Copyright (c) Microsoft Corporation. All rights reserved.
Installing assembly C:\Documents and Settings\nmea\My Documents\Visual Studio
2008\Projects\ConsoleApplication4\ConsoleApplication4\bin\Release\ConsoleApplica
tion4.exe
Compiling assembly C:\Documents and Settings\nmea\My Documents\Visual Stud
io 2008\Projects\ConsoleApplication4\ConsoleApplication4\bin\Release\ConsoleAppl
ication4.exe (CLR v2.0.50727) ...
ConsoleApplication4, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
Run Code Online (Sandbox Code Playgroud) *.ni.dll.aux找到的文件的格式(数据布局)是C:\Windows\assembly\NativeImages_v4.0.30319_64什么?据我所知,这些是由...生成的辅助文件ngen.exe.它们包含哪些数据?
我想知道pre-JIT编译(ngen.exe)的好处.Native Image Generator(NGen)过程的作用是什么?为什么需要它?
请举个例子.
当我们知道它不会改变太多时,使用NGEN和ASP.NET应用程序是否更好?或者JIT足够好吗?
我问的唯一原因是因为Jeffrey Richter在2002年的这篇文章说:
当然,Microsoft正在努力改进CLR及其JIT编译器,以便它运行得更快,生成更优化的代码,并更有效地使用内存.这些改进需要时间.对于不能等待的开发人员,.NET Framework可再发行组件包含一个名为NGen.exe的实用程序.