在 C# 程序中,什么是 ThePreStub

本文关键字:什么 ThePreStub 程序 | 更新日期: 2023-09-27 18:36:20

在分析 C# 应用程序时,我在称为"ThePreStub"的系统 (?) 方法中看到相当多的 CPU 使用率。 这是怎麽?

在 C# 程序中,什么是 ThePreStub

请参阅:CLR Inside Out - NGen 的性能优势。

NGen编译代码的吞吐量低于JIT编译的代码 代码主要有一个原因:交叉程序集引用。在 JIT编译的代码,跨汇编引用可以实现为 直接调用或跳转,因为这些引用的确切地址 在运行时已知。但是,对于静态编译的代码, 交叉程序集引用需要通过一个跳槽,该跳槽得到 通过执行方法在运行时填充正确的地址 预存根。该方法预存根可确保,除其他事项外,还 加载该方法引用的程序集的本机图像 在执行方法之前放入内存中。预存根只需要 在第一次调用该方法时执行;是的 短路,用于后续呼叫。但是,每次 方法被调用,交叉程序集引用确实需要经过 间接级别。这主要是导致 5-10 与 NGen 编译代码相比,NGen 编译代码的吞吐量下降百分比 JIT 编译的代码。