重要更新:请查看底部的更新 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
为什么razor这么慢?
更新:我重新进行了测试。所有4个测试虚拟目录都使用相同的.net 4集成模式应用程序池。所有项目都使用添加新的空x项目并添加1页带有1行文本且没有代码的方式完成。所有站点都以发布模式编译。我的系统是Windows 7,4个GB i7 4个内核。我运行了测试2次来预热IIS,这些是第二次运行的结果。Apache Bench参数: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 后,问题得以解决。有趣的是,它只会影响到这个规模下的 razor 模板。在部署时应该注意这一点。
System Requests per second CPU Utilization
----------------------------------------------------
mvc 3 rc2 razor 3940 58%
mvc 3 rc2 aspx 4100 58%
多亏了 asp.net mvc 团队,做得非常棒!
<deployment retail="true" />
部分?此外,请记住,ASP.NET MVC 3仍在积极开发中,因此不能期望它已经完全优化。至少等待它达到RTM版本。 - Darin Dimitrov