【发布时间】:2012-05-31 00:21:04
【问题描述】:
我有一个具有以下属性的大型 ASP.NET Web 应用程序:
- 我正在使用 Visual Studio 2010 Ultimate IDE
- .Net Framework 3.5
- ASP.NET(网络应用程序)
- NHibernate 版本 2.2 用作本项目中的 ORM
- 开发者系统:CPU 双核 2.94GHz x64,6GB 内存
- 项目重建时间 3 ~ 4 分钟
- 更改后构建项目通常需要 1 分钟
当开发人员尝试在默认模式下浏览页面时,需要 2 到 4 分钟 才能显示第一个页面,并且他/她可以在合理的时间内浏览其他页面
当开发者想要调试一个页面时,需要 4 ~ 7 分钟才能看到第一页等等。
因此,如果开发人员对代码进行了更改并想在调试模式下对其进行检查,他/她会发疯的,因为检查代码中的微小更改需要花费大量时间。
有什么办法可以减少调试时间?
我将一个大项目缩减为许多小项目。 (小的现在可以在很短的时间内调试,所以大部分都很好)
但是 4 个仍然很大的项目存在同样的问题,它们没有任何改变。我也在本地 IIS 中部署它们,但没有任何改变。
任何建议将不胜感激
提前谢谢你
【问题讨论】:
-
两个问题:(1)你说的大是什么意思?大约有多少页面和用户控件? (2) App_Code 中有多少个文件?在 App_Code 中编译大量类会显着减慢编译时间。
-
你知道有多少初始化时间是编译与加载资源(即缓存来自外部源的数据和资源)吗?换句话说,如果在全局 asax 应用程序启动事件处理程序中设置断点,需要多长时间才能击中它?如果您在自定义站点初始化代码之前立即放置另一个断点,这需要多长时间?基本上,我们需要有关 AppDomain 启动和请求的页面/控件编译的哪一部分花费时间最长的数据。
-
在 UI 上工作时,通常不需要在每次更改标记时都重新启动应用程序。您只需在浏览器中按 F5 即可立即查看更改,甚至无需重新编译 Web 应用程序。如果你修改了后面的代码并需要重新编译,那么单元测试部分就来了。不幸的是,如果应用程序设计不佳并且不同层之间存在强耦合,则很难应用这些概念。
-
另外,对于非常大的项目,我发现固态驱动器可以提供很大帮助,尤其是对于在本地运行数据库引擎的开发机器。这当然不能解决无法管理的大型项目的根本问题,但它可能有助于以相对较小的成本(100-150 美元)减少构建时间。
-
为了测试非常小的更改,您可以尝试在 Web 项目属性中的 Web > Debuggers 下检查 Enable Edit and Continue。
标签: c# asp.net performance debugging deployment