Я работаю над решением для сериализации Json.
Я обнаружил, что сериализация, основанная на излучении, была намного быстрее, чем прямые операции над API Reflection после того, как выпущенный код уже был запущен один раз (каждый раз с различными данными).
Очевидно, что проблема в JIT. Это можно проверить, если вы проверите реализацию Runtime.CompilerServices.RuntimeHelpers._CompileMethod
в DynamicMethod.CreateDelegate
, которая является методом QCall. Он генерирует только Prestub для MethodDescriptor DynamicMethod.
Так что мне интересно, есть ли способ форсировать компиляцию DynamicMethod. Функция PreJIT, предоставляемая Runtime.CompilerServices.RuntimeHelpers.PrepareMethod
, просто не работает, потому что у меня нет прямого доступа к RuntimeMethodHandle DynamicMethod. Так есть ли другой (легальный) способ достижения этой цели?
Заранее спасибо.