4

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

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

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

其次,有没有办法确定一个方法是否已经被 JIT 编辑过?(虽然我没有注意到不小心多次调用它的任何延迟或问题)

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

4

1 回答 1

2

由于您所问的是高度依赖于实现的,因此没有明确的答案......我希望在 JITted 时会对方法进行某种锁定......但除了深入挖掘特定的 .NET 版本等.这仍然是猜测...

顺便说一句:有一个(非公共)字段被称为JIT 编译器在 jitting 后设置IsJitted的相应字段...有关更多信息,请参见此处...MethodDesctrue

于 2012-12-08T13:04:04.580 回答