我使用ab.exe(阿帕奇工作台)一本地开发机器上,四核酷睿i7/8GB内存/ Windows中使用IIS 8.5C#MVC 5.1剃刀3.0性能问题
8.1亲我得到了一些非常奇怪的表现结果,我无法弄清楚这个问题。首先我的web.config有debug = false,trace = false,并且应用程序正在发布模式下编译。发布模式跟踪常量禁用和调试常量禁用和优化启用。不安全的代码未被选中。
我已经试过了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" });
控制器:
public class PageController : Controller
{
public ActionResult Index()
{
return View();
}
}
public class TestController : Controller
{
public ActionResult Index()
{
return View();
}
}
〜\查看\页\ Index.cshtml
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title></title>
</head>
<body>
<div>
Testing
</div>
</body>
</html>
〜\查看\测试\ 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测试,只包括剃须刀:
个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)
而 'A' 在它只是当我在该项目,并以字母静态txt文件已使ASPX向您展示一个比较差:
ASPX
Requests per second: 8086.47 [#/sec] (mean)
Static File:
Requests per second: 7503.54 [#/sec] (mean)
ASPX代码(如上所述,与剃刀相同的项目,但没有删除aspx渲染引擎的代码)似乎比在同一个项目中查找静态文件的速度更快。由于检查/流式传输文件的IO开销较少,这会有所帮助。
但问题是为什么不是剃须刀页面至少表现更好?
我正在测试的当前活网站是MVC4/Razor2,而新版本是MVC5/Razor3,所以虽然我期望有所不同,甚至可能会稍微慢一些,但我不会期望有一个基本页面没有处理打败数据库驱动(数据库结果缓存,没有输出缓存)配方查找和格式化页面有很多代码/检查/渲染snipets(太大不能粘贴)
在我将测试项目更改为MVC5/Razor3我用MVC4/Razor2测试了它,代码与上面完全一样,结果大约在〜2k/sec左右,略高于当前活动网站上的配方页面 - 这也是我期望的结果。
所以我问什么可能会导致剃刀得到如此糟糕的表现相比,我的系统/配置/项目上的aspx?任何我错过了或我可以检查?我忽略了什么?