我正在研究 Json 序列化解决方案。
我发现在发射的代码已经运行一次(每次使用不同的数据)之后,基于发射的序列化比对反射 api 的直接操作要快得多。
显然问题是JIT。Runtime.CompilerServices.RuntimeHelpers._CompileMethod
如果您检查in的实现,则可以验证DynamicMethod.CreateDelegate
这一点,这是一个 QCall 方法。它只为 DynamicMethod 的 MethodDescriptor 生成一个 Prestub。
所以我想知道是否有办法强制编译DynamicMethod。提供的 PreJIT 功能Runtime.CompilerServices.RuntimeHelpers.PrepareMethod
根本不起作用,因为我无法直接访问 DynamicMethod 的 RuntimeMethodHandle。那么还有其他(合法的)方法可以实现这一目标吗?
提前致谢。