在分析C#应用程序时,我发现在称为"ThePreStub"的系统(?)方法中有相当大的CPU使用率.这是什么?
Hab*_*bib 21
NGen编译代码的吞吐量低于JIT编译代码的吞吐量主要有一个原因:交叉汇编引用.在JIT编译的代码中,交叉程序集引用可以实现为直接调用或跳转,因为这些引用的确切地址在运行时是已知的.但是,对于静态编译的代码,跨程序集引用需要通过执行方法pre-stub在运行时通过跳转槽填充正确的地址.除了其他方面之外,方法pre-stub还确保在执行方法之前将该方法引用的程序集的本机映像加载到内存中.只需要在第一次调用方法时执行pre-stub; 它被短路用于后续通话.但是,每次调用该方法时,跨程序集引用都需要经过一个间接级别.这主要是因为与JIT编译的代码相比,NGen编译代码的吞吐量下降了5-10%.