gpt4 book ai didi

C# MVC 5.1 Razor 3.0 性能问题

转载 作者:行者123 更新时间:2023-11-30 16:13:25 26 4
gpt4 key购买 nike

我在本地开发机器上使用 ab.exe (apache bench),四核 i7/8gb ram/windows 8.1 pro 使用 IIS 8.5

我得到了一些非常奇怪的性能结果,我无法找出问题所在。首先,我的 web.config 有 debug=false、trace=false 并且应用程序正在以 Release模式编译。 Release模式禁用跟踪常量和禁用调试常量,并启用优化。不安全代码未勾选。

我已经为 ab 尝试了几种不同的设置,但目前正在使用这些设置:

ab -c 150 -n 1000 -s 5 http://localhost:15007/partials/recipes/_recipe-930.html
ab -c 150 -n 30000 -s 5 http://localhost:15007/partials/recipes/_recipe-930.html > log-currentsite.txt

ab -c 150 -n 1000 -s 5 http://localhost:15008/razor
ab -c 150 -n 30000 -s 5 http://localhost:15008/razor > log-razor.txt

是的,我在热身时做得太过分了——但没过多久:)

15007 上的站点是在同一台本地计算机和同一 IIS 上处于实时构建模式的当前实时站点,具有所有相同的应用程序池设置(默认)15008 站点只有简单的基本代码:

路由配置:

routes.MapRoute(name: "Razor", url: "razor", defaults: new { controller = "Page", action = "Index" });
routes.MapRoute(name: "ASPX", url: "aspx", defaults: new { controller = "Test", action = "Index" });

Controller :

public class PageController : Controller
{
public ActionResult Index()
{
return View();
}
}

public class TestController : Controller
{
public ActionResult Index()
{
return View();
}
}

~\Views\Page\Index.cshtml

@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title></title>
</head>
<body>
<div>
Testing
</div>
</body>
</html>

~\Views\Test\Index.aspx

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %>
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title></title>
</head>
<body>
<div>
Testing
</div>
</body>
</html>

但是现在我已经禁用了 aspx 测试并且只包括 Razor :

public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new RazorViewEngine());

AreaRegistration.RegisterAllAreas();

FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
}
}

结果:

log-currentsite.txt:
Requests per second: 1896.31 [#/sec] (mean)

log-razor.txt
Requests per second: 1163.77 [#/sec] (mean)

只是为了向您展示当我在项目中启用 ASPX 和其中包含字母“a”的静态 txt 文件时的比较差异:

ASPX
Requests per second: 8086.47 [#/sec] (mean)

Static File:
Requests per second: 7503.54 [#/sec] (mean)

ASPX 代码(如上所述,与 Razor 相同的项目,但没有删除 aspx 渲染引擎的代码)似乎也比在同一项目中查找静态文件更快。这是有道理的,因为检查/流式传输文件的 IO 开销较少。

但问题是为什么 Razor 页面的性能至少不接近?

我正在测试的当前实时网站是 MVC4/Razor2,新网站也是 MVC5/Razor3,所以虽然我希望有所不同,但结果可能会稍微慢一点,但我没想到基页会这样没有处理来击败具有大量代码/检查/呈现片段(太大而无法粘贴)的数据库驱动(数据库结果缓存,无输出缓存)配方查找和格式化页面

在我将测试项目更改为 MVC5/Razor3 之前,我确实使用与上面完全相同的代码使用 MVC4/Razor2 对其进行了测试,结果以大约 2k/秒的速度出现,略高于当前直播中的食谱页面网站 - 我也希望如此。

所以我想问一下,与我的系统/配置/项目上的 aspx 相比,是什么导致 Razor 的性能如此差?我错过了什么或者我可以检查吗?我忽略了什么?

最佳答案

啊哈,我想问这个问题可能让我有时间思考。

似乎在 Views web.config 中存在一些配置问题!它仍然指向 v2 而不是 v3。我收集到 NuGet 的更新不是很有效。但是页面没有错误。也许是 2 和 3 之间的 View 链接?然而,我不认为这是可能的。

将 View web.config 版本号更新为 3.0.0 后,我得到了我最初预期的结果:

Razor:
Requests per second: 9696.84 [#/sec] (mean)

:D

编辑:以防万一它有用的 id 想补充一点,我已经将当前的实时站点从 MVC4/Razor2 更改为 MVC5/Razor3,并且 RPS 的变化是巨大的:

来自:

log-currentsite.txt:
Requests per second: 1896.31 [#/sec] (mean)

收件人:

log-currentsite.txt:
Requests per second: 5063.96 [#/sec] (mean)

请注意,我编写的任何代码都没有更改 - 我不确定新 mvc 中是否只是进行了很多性能调整,或者删除/添加是否只是修复了我的项目中的某些内容,但我认为 id分享。

关于C# MVC 5.1 Razor 3.0 性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21668878/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com