在C#程序中,PreSub是什么?

在C#程序中,PreSub是什么?,c#,profiling,C#,Profiling,在分析C#应用程序时,我看到称为“ThePreSub”的系统(?)方法中有大量CPU使用。这是什么?请参见: NGen编译代码的吞吐量低于JIT编译代码的吞吐量 编写代码主要有一个原因:交叉程序集引用。在里面 JIT编译代码,跨程序集引用可以实现为 直接调用或跳转,因为这些引用的确切地址 在运行时已知。但是,对于静态编译的代码,, 交叉程序集引用需要通过一个跳转槽 通过执行方法在运行时填充正确的地址 预存根。预存根方法确保 加载该方法引用的程序集的本机映像 在执行该方法之前将其存储到内存中。预存

在分析C#应用程序时,我看到称为“ThePreSub”的系统(?)方法中有大量CPU使用。这是什么?

请参见:

NGen编译代码的吞吐量低于JIT编译代码的吞吐量 编写代码主要有一个原因:交叉程序集引用。在里面 JIT编译代码,跨程序集引用可以实现为 直接调用或跳转,因为这些引用的确切地址 在运行时已知。但是,对于静态编译的代码,, 交叉程序集引用需要通过一个跳转槽 通过执行方法在运行时填充正确的地址 预存根。预存根方法确保 加载该方法引用的程序集的本机映像 在执行该方法之前将其存储到内存中。预存根只需要 在第一次调用该方法时执行;它是 对后续呼叫短路。然而,每次 方法时,交叉程序集引用确实需要经过 间接层次。这主要是造成5-10的原因 与相比,NGen编译代码的吞吐量下降百分比 JIT编译代码


请说明您尝试了什么,发现了什么,以及为什么这些信息不够。“ThePreSub”的前几个web搜索结果解释了很多CLR的工作原理。@CodeCaster——在你的评论之后,我做了一个实验,发现如果你用谷歌搜索“ThePreSub”,你会得到很多好信息。不幸的是,我最初尝试在我的Windows虚拟机上搜索Bing作为默认提供程序,但几乎什么也没有找到。吸取的教训。