关于使用RuntimeHelpers.PrepareMethod()预先进行JIT的问题

时间:2012-11-17 22:59:11

标签: c# .net clr

我正在探索使用RuntimeHelpers.PrepareMethod()来减少具有大量UI库的瘦客户端应用程序的启动时间

我创建了一个JIT-helper类,在后台线程上运行并遍历类型或程序集的方法,并在它们上调用PrepareMethod

首先,这样做有什么缺点吗? (我并不是指JIT整个应用程序,我的意思是重型库,例如Infragistics,DevExpress和代表WPF中窗口类的类)

其次,无论如何都要确定某个方法是否已经被JIT编辑过了? (虽然我没有注意到多次意外调用它有任何延迟或问题)

最后,如果我在后台线程上执行JIT并且另一个线程调用当前正在JIT编辑的方法会发生什么?

1 个答案:

答案 0 :(得分:2)

因为你所要求的是高度依赖于实现的,所以没有明确的答案......我希望在方法被JIT时对某个方法进行某种锁定......但除了深入挖掘具体内容之外。 NET版本等,这仍然是猜测...

BTW:JIT编译器在jitting之后设置为IsJitted的{​​{1}}上有一个(非公共)字段MethodDesc ...有关更多信息,请参阅{ {3}} ...