在Razor视图中使用Partials的性能成本

Evg*_*nii 9 c# razor asp.net-mvc-3

我喜欢在我的Razor视图中使用partials.它使代码更好,更干净.但是使用partials有任何显着的性能成本吗?我创建了一个简单的测试.它表明使用partials 慢得多.

test.cshtml:

@{
   var stopwatch = new System.Diagnostics.Stopwatch(); 
   stopwatch.Start();         
   for(var i=0; i<1000; i++) {
      var str = "my string #" + i;        
      @Html.Partial("_MyPartial",str)  // replace with @str on second test
      <br />        
   }
   stopwatch.Stop();
   <br />
   @: Time elapsed (ms): @(stopwatch.ElapsedMilliseconds)
}
Run Code Online (Sandbox Code Playgroud)

_MyPartial.cshtml:

@Model
Run Code Online (Sandbox Code Playgroud)

部分执行的代码在340毫秒,而内联@str代码显示0或1毫秒.这对我来说真的很震撼,因为这意味着我应该摆脱所有可爱的局部,至少在循环中.

如果有人想确认或批评我的实验,我们非常欢迎您.

mar*_*ind 9

  1. 确保您没有以调试模式运行站点,并且MVC项目正在发布配置中进行编译.在调试模式下运行站点会使MVC跳过一堆缓存
  2. 您没有提供基线代码,因此很难确定您的结论是否合理.
  3. 你认为对Partial进行1000次调用很常见吗?好像你在测量一个不现实的场景.在任何相当复杂的网站中,数据库调用的成本通常会使任何视图代码相形见绌.
  4. 请观看此视频:http://channel9.msdn.com/Series/mvcConf/mvcConf-2-Steven-Smith-Improving-ASPNET-MVC-Application-Performance