2

我正在研究 Json 序列化解决方案。

我发现在发射的代码已经运行一次(每次使用不同的数据)之后,基于发射的序列化比对反射 api 的直接操作要快得多。

显然问题是JIT。Runtime.CompilerServices.RuntimeHelpers._CompileMethod如果您检查in的实现,则可以验证DynamicMethod.CreateDelegate这一点,这是一个 QCall 方法。它只为 DynamicMethod 的 MethodDescriptor 生成一个 Prestub。

所以我想知道是否有办法强制编译DynamicMethod。提供的 PreJIT 功能Runtime.CompilerServices.RuntimeHelpers.PrepareMethod根本不起作用,因为我无法直接访问 DynamicMethod 的 RuntimeMethodHandle。那么还有其他(合法的)方法可以实现这一目标吗?

提前致谢。

4

0 回答 0