【问题标题】:Does .Net Framework Class libraries in GAC compile each time to Native Code ? Or will it load directly from Native Image Directory ?GAC 中的 .Net Framework 类库是否每次都编译为本机代码?还是直接从 Native Image Directory 加载?
【发布时间】:2015-07-02 20:29:26
【问题描述】:

我一直在阅读 CLR Via C# 这本书,通过使用 NGen.exe,我了解到我可以将我的程序集编译为 Native Image。这提高了性能。但是,本机代码是根据我的架构定制的。

当我打开本机图像目录时
C:\Windows\assembly\NativeImages_v4.0.30319_64\System\d6591361d8701ff6eb6a9df223c24684

我找到了所有内置 .net 框架类库的 Native Images。

所以我的问题是当我们的应用程序引用一个本地图像时,内存中的这个原生图像会直接使用吗?

.net 框架安装程序也会生成这些充分利用 CPU 架构的类库的本机映像。

提前致谢!!!

【问题讨论】:

    标签: .net clr gac jit native-code


    【解决方案1】:

    是的,框架库没有被 jitted。它们将从本机图像缓存中加载。

    您可以通过检查加载的程序集路径自己验证这一点。 process explorer 等工具可用于查看进程加载的程序集。

    例如:在我的机器中,mscorlib 恰好是从

    C:\Windows\assembly\NativeImages_v4.0.30319_32\mscorlib\blahblahblah\mscorlib.ni.dll
    

    .net 框架安装程序也会生成原生镜像 这些类库充分利用了 CPU 架构。

    不知道你在这里的意思。安装程序在这里什么都不做。它是创建本机图像的 ngen.exe。所以,是的,它会生成最适合机器的 cpu 架构的机器代码。

    【讨论】:

      猜你喜欢
      • 2020-03-11
      • 2010-11-18
      • 1970-01-01
      • 2010-09-13
      • 2010-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多