我目前正在处理的 ASP.NET Web 应用程序项目随着时间的推移而变得越来越慢,以重新加载(在 IIS 或 .NET 开发服务器中)。目前需要:
- 通过 F5 调试加载 1:28 分钟
- 41 秒在浏览器中刷新,构建后(不是重建)
这台机器相当快 - 一个 Core 2 Quad 2.40ghz,8 gig o' RAM,在 HyperV 下运行开发机器,分配给 dev VM 的 2 gig o' RAM。
有没有办法跟踪/报告初始负载的整个周期?如果我能看到启动基本 IIS 工作进程、加载 DLL、运行实际的 .NET 代码需要多长时间,那就太好了。
我知道我可以在代码上使用分析器——它没有出现任何超慢的数据库连接建立时间,但我想在处理实际页面之前对这些东西的性能有一些了解。我可以看到 CPU 监视器在此过程中达到了 100%,RAM 使用率略有上升 - 但我正在寻找更好的洞察力,希望能稍微调整一下。
虽然我在项目开始时(4 个月前)没有进行任何测量,但我完全确定重新加载相对轻而易举。
非常感谢任何帮助,程序员只能在构建时喝这么多咖啡。
更新:
JetBrain 的dotTrace非常好(在本例中),谢谢。它具有启动 Web 项目的完美界面,并很快强调大部分时间都在Application_Start()中(在Global.asax中)。
其他选项不会选择这个,因为:
Trace选项仅从 PreInit 开始,缺少 Application_Start() 调用。
秒表调用将要求我知道在哪里看,或者恢复到 printf 式调试的美好时光......
nprof想要定位一个 .exe,它在尝试附加到新的 w3wp.exe 实例时会错过目标区域......