托管调试助手(MDA)jitCompilationStart用法

时间:2013-05-15 11:38:19

标签: .net visual-studio-2010 debugging optimization

我正在尝试优化某些WinForms应用程序的冷启动时间。我已经NGen所有程序集但仍然看到JIT被调用。我启用了MDA的jitCompilationStart,并从MDA中看到运行时异常,说某些东西导致了JIT的调用。

我的问题是 - 现在怎样?我看到的是建议的调试器列表。如果我从列表中选择sthm - 我在VS中看不到任何内容。应用程序继续执行,就是这样。如何获取有关app的哪个部分调用JIT的信息?

enter image description here

我在Debug-> Exceptions - >中启用了JitCompilationStart。托管调试助理:

enter image description here

1 个答案:

答案 0 :(得分:2)

MDA是为了在抖动开始时附加调试器。要求是一个已注册的非托管调试器,它能够调试C ++代码以及抖动的源代码。您已满足第一个要求,VS20120和VS2012具有出色的非托管调试器。后者对于像你我这样的凡人来说是相当困难的。整个场景仅对Microsoft SDET感兴趣。

显然,您在错误的道路上诊断冷启动延迟。在多种方式中,抖动是 warm 启动细节。冷启动由磁盘查找汇编文件所需的时间占主导地位。使用Ngen实际上正是您想要做的事情,它使需要找到的文件数量翻倍。改善暖启动时间是件好事。

冷启动延迟只有三个好的解决方案。使用较少的程序集,ILMerge可以提供帮助。使用更快的磁盘,SSD有很大帮助。并且作弊,在登录时启动一个小的do-nothing .NET程序,将程序集加载到文件系统缓存中。在用户启动.NET应用程序一段时间后,这实际上是自动的,Windows prefetcher学习并预加载DLL。很难注意到,除了客户在一段时间后停止抱怨。

相关问题