.net 如何获取应用程序启动期间创建的所有类型(完全限定)的列表
我正在努力解决一个应用程序的冷启动性能问题,这个应用程序恰好是.NET和COM的混合体。所谓冷启动,我指的是在机器重新启动后启动应用程序(这在松下Toughbooks部署的平台上经常发生) 冷启动时间大约是热启动时间的3倍(110秒vs 35秒) 通过使用process monitor,我确定冷启动和热启动之间的主要区别在于访问DLL所需的时间-主要是从GAC,但也可以从Windows\microsoft.net和其他几个文件夹访问DLL 我已经审阅了以下相关帖子,并实际执行了一些建议:.net 如何获取应用程序启动期间创建的所有类型(完全限定)的列表,.net,windows,performance,.net,Windows,Performance,我正在努力解决一个应用程序的冷启动性能问题,这个应用程序恰好是.NET和COM的混合体。所谓冷启动,我指的是在机器重新启动后启动应用程序(这在松下Toughbooks部署的平台上经常发生) 冷启动时间大约是热启动时间的3倍(110秒vs 35秒) 通过使用process monitor,我确定冷启动和热启动之间的主要区别在于访问DLL所需的时间-主要是从GAC,但也可以从Windows\microsoft.net和其他几个文件夹访问DLL 我已经审阅了以下相关帖子,并实际执行了一些建议: CL
- CLR程序集加载-冷启动性能问题 确定.NET程序集和方法引用
感谢您的建议。经过进一步研究,同事们提出了以下建议: 我发现获得此类列表的一种方法是通过Jet Brains的dotTracePerformance应用程序 但我还发现,至少其中一些信息已经包含在与应用程序关联的文件夹C:\Windows\prefetch下的“prefetch”文件中。这些是二进制文件,但可以使用winPrefetchView之类的工具查看内容 不幸的是,默认情况下,Windows只在预回迁文件中记录应用程序启动的前几秒钟。这一次是在注册表中配置的,但是(如本文所讨论的)这个二进制键的解释不清楚 我曾想在系统启动时强制对应用程序进行预取,但还没有找到通过WinAPI实现这一点的方法。(沿着这些思路的几次黑客攻击并没有产生显著的影响。)
无论如何,我对我原来的帖子有一个答案。如果这回答了你的问题,那么你应该接受答案