我正在探索使用RuntimeHelpers.PrepareMethod()来减少具有大量UI库的瘦客户端应用程序的启动时间
我创建了一个JIT-helper类,在后台线程上运行并遍历类型或程序集的方法,并在它们上调用PrepareMethod
首先,这样做有什么缺点吗? (我并不是指JIT整个应用程序,我的意思是重型库,例如Infragistics,DevExpress和代表WPF中窗口类的类)
其次,无论如何都要确定某个方法是否已经被JIT编辑过了? (虽然我没有注意到多次意外调用它有任何延迟或问题)
最后,如果我在后台线程上执行JIT并且另一个线程调用当前正在JIT编辑的方法会发生什么?
答案 0 :(得分:2)
因为你所要求的是高度依赖于实现的,所以没有明确的答案......我希望在方法被JIT时对某个方法进行某种锁定......但除了深入挖掘具体内容之外。 NET版本等,这仍然是猜测...
BTW:JIT编译器在jitting之后设置为IsJitted
的{{1}}上有一个(非公共)字段MethodDesc
...有关更多信息,请参阅{ {3}} ...