c# - ASP.NET MVC 3 Razor 性能

标签 c# asp.net-mvc performance asp.net-mvc-3 razor

重要更新:请参阅底部的更新 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 页来完成的。所有站点均以 Release模式编译。我的系统是 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%

更新 2 Scott Guthrie 在他的博客中回答:

We haven't fully optimized MVC3 yet (there is usually a lot of cache tuning we do). We expect razor to be the same performance as the .aspx view engine before it is finally released.

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 所有测试都在 Release模式下完成,但问题是 debug="true" 在我的 web.config 文件中(这也会影响发布构建),之后将其更改为 false,问题已解决。有趣的是,它如何只影响这种规模的 Razor 模板。我们在部署时应该考虑到这一点。

System         Requests per second   CPU Utilization
----------------------------------------------------
mvc 3 rc2 razor               3940               58%
mvc 3 rc2 aspx                4100               58%

感谢 asp.net mvc 团队,干得好!

最佳答案

(响应您的 RC2 号码的新答案)

感谢更新的数字。几点:

  1. 您的 Aspx 数字看起来不错,因为我们希望 MVC3 Aspx 与 MVC2 Aspx 相当(预计在这样的 Hello World 示例中会慢一点)
  2. 你的 Razor 号看起来很可疑。我们知道 Razor 比等效的 Aspx 慢一点,但是,差异应该不大于 5%-7%。您的数字显示速度慢了 50%,这与我们的结果完全不符。检查项目是否在 Release 中编译,并且您在 web.config 中设置了 debug="false"
  3. 您的 CPU 使用率有点可疑。对于 1000 个并发请求,CPU 应该被 100% 使用。 (即使只有 8 个并发请求也应该足够,因为您有 8 个虚拟核心)
  4. 您的测试运行了大约 20-25 秒。这有点偏低,因为系统其他地方的短暂(1-2 秒)事件爆发可能会显着影响您的结果。
  5. 关于第 4 点,每个场景您运行一次还是几次?您是否看到结果有很大差异?由于您的操作系统在后台做其他事情,因此通常会在运行之间看到不同的结果。

关于c# - ASP.NET MVC 3 Razor 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3828961/

相关文章:

asp.net mvc javascript 回发

javascript - 从 javascript 链接到 .cshtml View

c# - 列出 KeyVault 中的 secret 而无需登录每个 secret ?

java - 单个方法的持续时间 (Java)

c# - 打印不规则线条的条码

c# - linq.js GroupBy 在多列上使用 Sum

c# - 控件上的透明图像

c# - 如何在 C# 中为文件设置清除属性 "X"?

java - Java 和 C/C++ 之间进程间通信的最快(低延迟)方法

performance - 为什么 Delphi 中的 ADO Next 记录处理速度变慢?