【发布时间】:2011-04-19 05:48:29
【问题描述】:
重要更新:见底部更新 5 在 asp.net mvc 3 中没有性能问题,这是一个基准问题
我在 asp.net mvc2、3 aspx 和 3 razor 中制作了一个简单的 hello world 项目,并对它们进行了基准测试。我看到的是:
System Requests per second
-------------------------------------------
asp.net mvc 2 ASPX 4200
asp.net mvc 3 Beta 1 ASPX 3200
asp.net mvc 3 Beta 1 Razor 1700
剃须刀怎么了,这么慢?
更新: 我已经重做了测试。所有 4 个测试虚拟目录都使用相同的 .net 4 集成模式应用程序池。所有项目都通过添加新的空 x 项目并添加 1 页与 1 行文本且没有代码来完成。所有站点都以发布模式编译。我的系统是windows 7, 4 gb i7 4 cores。我已经运行了 2 次测试来预热 iis,这些是第二次运行的结果。 apache工作台参数:ab -n100000 -c1000 结果:
System Requests per second CPU Utilization
----------------------------------------------------
asp.net 4 4780 43%
mcv 2 4322 58%
mvc 3 beta 1 aspx 2324 54%
mvc 3 beta 1 razor 1615 54%
更新 2 Scott Guthrie 在他的博客中回答:
我们还没有完全优化 MVC3(我们通常会做很多缓存调整)。我们希望 razor 在最终发布之前能够与 .aspx 视图引擎具有相同的性能。
System Requests per second CPU Utilization
----------------------------------------------------
mvc 3 rc1 razor 1960 54%
mvc 3 rc2 razor 2187 54%
mvc 3 rc2 aspx 4014 58%
更新 5 所有测试都在发布模式下完成,但问题是我的 web.config 文件中的 debug="true"(这也会影响发布版本),将其更改为 false 后,问题已修复。有趣的是,它只影响这种规模的剃刀模板。我们应该在部署时考虑到这一点。
System Requests per second CPU Utilization
----------------------------------------------------
mvc 3 rc2 razor 3940 58%
mvc 3 rc2 aspx 4100 58%
感谢 asp.net mvc 团队,干得好!
【问题讨论】:
-
您是如何执行基准测试的?您的站点是否以 Release 模式部署在 IIS 上?您是否使用了 machine.config 中的
<deployment retail="true" />部分?还请记住,ASP.NET MVC 3 仍在大力开发中,因此您不能指望它会得到全面优化。至少等到它到达 RTM。 -
+1 Darin - 不能指望处于 alpha/beta 阶段的产品得到全面优化。
-
这是一个非常合适的答案,你为什么要把它作为评论提交?
-
你能在 MVC3 中禁用旧的 ASPX ViewEngine 吗?我想我在某处读到多个 ViewEngines 是 MVC2 中的主要性能消耗者,也许 MVC3 中仍然存在该问题并且开销是问题的一部分?发现这一点会很有趣!
-
我看到你在 Phil Haack 的博客上就 RC2 提出了这个问题。我们做了一些重要的性能工作,所以你的数字应该会提高。你能试试新版本吗?
标签: c# asp.net-mvc performance asp.net-mvc-3 razor