Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将MSIL转换为存储的本机代码_C#_Jit - Fatal编程技术网

C# 将MSIL转换为存储的本机代码

C# 将MSIL转换为存储的本机代码,c#,jit,C#,Jit,这是一个非常基本的问题 JIT编译是根据MSDN的要求进行的。 每次运行汇编时,JIT编译器都会将MSIL转换为本机语言?或者当我们第一次运行汇编时,它会将本机语言代码转换并存储到某个地方 提前谢谢 JIT编译器在启动应用程序时编译代码并将其存储在内存中 此代码可以由缓存并存储在本机映像缓存中。这将在下次启动应用程序时自动加载,并且不必再次JIT MSIL代码 Ngen.exe创建本机映像(包含编译的处理器特定机器代码的文件),并将其安装到本地计算机上的本机映像缓存中。运行时可以使用缓存中的本机

这是一个非常基本的问题

JIT编译是根据MSDN的要求进行的。 每次运行汇编时,JIT编译器都会将MSIL转换为本机语言?或者当我们第一次运行汇编时,它会将本机语言代码转换并存储到某个地方


提前谢谢

JIT编译器在启动应用程序时编译代码并将其存储在内存中

此代码可以由缓存并存储在本机映像缓存中。这将在下次启动应用程序时自动加载,并且不必再次JIT MSIL代码

Ngen.exe创建本机映像(包含编译的处理器特定机器代码的文件),并将其安装到本地计算机上的本机映像缓存中。运行时可以使用缓存中的本机映像,而不是使用即时(JIT)编译器编译原始程序集


可以在类似于
C:\Windows\assembly\NativeImages\u v4.0.30319\u 64
的路径上找到本机映像缓存。此路径无法通过Windows资源管理器访问,因此请使用
cmd
或powershell。

启动应用程序时,JIT编译器会编译代码并将其存储在内存中

此代码可以由缓存并存储在本机映像缓存中。这将在下次启动应用程序时自动加载,并且不必再次JIT MSIL代码

Ngen.exe创建本机映像(包含编译的处理器特定机器代码的文件),并将其安装到本地计算机上的本机映像缓存中。运行时可以使用缓存中的本机映像,而不是使用即时(JIT)编译器编译原始程序集


可以在类似于
C:\Windows\assembly\NativeImages\u v4.0.30319\u 64
的路径上找到本机映像缓存。此路径无法通过Windows资源管理器访问,因此请使用
cmd
或powershell。

谢谢您的回答。这是否意味着每次运行程序集时,MSIL都会通过JIT转换为本机代码?因为启动哪个应用程序需要很长时间。好吧,GAC与“本机映像缓存”不同@MatíasFidemraizer我不是100%确定,但我认为本机映像缓存要么是GAC的一部分,要么它们一起工作。通过命令行工具,您可以访问
C:\Windows\assembly\GAC
上的GAC和
C:\Windows\assembly\native…
上的本机映像缓存。但是,如果您通过Windows资源管理器转到
C:\Windows\assembly
,一个外壳扩展将向您显示两者的内容。@dcastro顺便说一句,如果我没有错,外壳扩展已被弃用,谁知道它是否反映了GAC和图像缓存的实际状态…@user2323308否,它的意思正好相反。第一次运行程序集时,IL被编译为本机代码。NGEN将缓存本机代码,以便下次运行应用程序时可以重用。谢谢您的回答。这是否意味着每次运行程序集时,MSIL都会通过JIT转换为本机代码?因为启动哪个应用程序需要很长时间。好吧,GAC与“本机映像缓存”不同@MatíasFidemraizer我不是100%确定,但我认为本机映像缓存要么是GAC的一部分,要么它们一起工作。通过命令行工具,您可以访问
C:\Windows\assembly\GAC
上的GAC和
C:\Windows\assembly\native…
上的本机映像缓存。但是,如果您通过Windows资源管理器转到
C:\Windows\assembly
,一个外壳扩展将向您显示两者的内容。@dcastro顺便说一句,如果我没有错,外壳扩展已被弃用,谁知道它是否反映了GAC和图像缓存的实际状态…@user2323308否,它的意思正好相反。第一次运行程序集时,IL被编译为本机代码。NGEN将缓存本机代码,以便下次运行应用程序时可以重用。