ASP.NET MVC 3 Razor性能

重要更新:请参阅底部的更新5,在asp.net mvc 3中没有性能问题,这是一个基准问题

我在asp.net mvc2,3 aspx和3 razor中制作了一个简单的hello世界项目并对它们进行了基准测试。 我看到的是:

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核心。 我已经运行了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%

Update 2 Scott Guthrie在他的博客中回答道:

我们还没有完全优化MVC3(通常我们会进行很多缓存调优)。 我们预计在最终发布之前,剃须刀与.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团队,出色的工作!


(答复您的RC2号码的新答案)

感谢您更新的号码。 几点:

  • 您的Aspx数字看起来不错,因为我们预计MVC3 Aspx将与MVC2 Aspx一致(在这样的Hello World示例中会有点慢)
  • 你的剃须刀数字看起来很可疑。 我们知道Razor比等效的Aspx慢一点,但是差别应该不大于5%-7%。 你的数字表示慢了50%,这与我们的结果不符。 检查项目是否在Release中编译,并且在web.config中设置了debug="false"
  • 你的CPU利用率有点怀疑。 有1000个并发请求,CPU应该100%使用。 (即使只有8个并发请求应该足够,因为你有8个虚拟内核)
  • 您的测试运行约20-25秒。 这有点偏低,因为在系统其他地方短时间(1-2秒)的活动爆发可能会非常显着地甩掉你的结果。
  • 与第4点相关,您是否曾经运行过每次场景一次或几次? 你看到结果有很大的差异吗? 由于您的操作系统在后台执行其他操作,因此通常会在运行之间看到不同的结果。

  • 你是如何执行基准测试的? 您的网站是否以模式发布部署在IIS上? 您是否在machine.config中使用了<deployment retail="true" />部分? 另外请记住,ASP.NET MVC 3仍处于严重的发展中,所以你不能指望它已经完全优化了。 至少等到它碰到RTM。

    链接地址: http://www.djcxy.com/p/52535.html

    上一篇: ASP.NET MVC 3 Razor performance

    下一篇: Node.js on multi