我正在尝试优化一些WinForms应用程序的冷启动时间。我已经生成了所有的程序集,但仍然看到调用了JIT。我已经启用了MDA的jitCompilationStart,并且看到MDA的运行时异常表明有什么东西导致了JIT的调用。
我的问题是-现在怎么办?我看到的是建议的调试器列表。如果我从列表中选择sthm -我在VS中看不到任何东西。应用程序会继续执行,仅此而已。如何获取应用程序的哪个部分调用JIT的信息?
我已经在调试->异常->托管调试助手中启用了JitCompilationStart:
发布于 2013-05-16 18:16:38
该MDA的目的是在抖动开始时附加一个调试器。要求注册的非托管调试器能够调试C++代码以及抖动的源代码。您已经满足了第一个要求,VS20120和VS2012拥有优秀的非托管调试器。后者对于像你我这样的凡人来说是相当困难的。整个场景只对Microsoft SDET感兴趣。
显然,您在诊断冷启动延迟方面走错了路。在多个方面,抖动是一个温暖的开始细节。冷启动主要取决于磁盘查找部件文件所需的时间。使用Ngen实际上正是您不想做的事情,它会使需要查找的文件数量加倍。它只对改善热启动时间有好处。
对于冷启动延迟,只有三种好的解决方案。使用更少的程序集,ILMerge可以提供帮助。使用速度更快的磁盘,SSD会有很大帮助。欺骗,在登录时启动一个不做任何事情的小.NET程序,将程序集加载到文件系统缓存中。在用户启动.NET应用程序一段时间后,Windows prefetcher会学习并预加载DLL,这实际上是自动的。很难注意到,除了客户在一段时间后停下来抱怨。
https://stackoverflow.com/questions/16564032
复制相似问题