2014-02-10 68 views
3

我使用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?任何我错过了或我可以检查?我忽略了什么?

回答

3

啊哈,问我这个问题,我想我也许会考虑这个问题。

看来,在视图web.config中有一些配置问题!它仍然指向v2而不是v3。我收集NuGet并不是非常有效的更新。但是,该页面并未出错。也许是在2到3之间的链接?但我不会认为这是可能的。

更新的意见web.config文件版本号3.0.0后,我得到了我最初的预期:

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

:d

编辑:万一它有帮助我还想补充一点,我从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分享