ASP.. NET MVC 4对性能的反射效果



我是一个新手。. NET MVC开发,5天前开始。你可以说只是在研发阶段。我喜欢MVC的开发风格,但是当我的一个朋友告诉我ASP。由于使用了反射,. NET MVC的性能无法与WebForms相比。例如:

@Html.EditorFor(model => model.FieldName)

MVC正在使用反射。因此,根据他的说法,我们应该使用正常的HTML标签来克服反射。例如

<input id="FieldName" class="text-box single-line" type="text" value="" name="FieldName" data-val-required="FieldName is required." data-val="true" />

我试图通过在互联网上搜索来消除困惑,发现如下:

ASP。. NET MVC性能
为什么在ASP中使用lambda ?. NET MVC而不是反射?
web中的反思与表现

但是这些话题并没有清楚地告诉我使用普通的HTML是否会给我更多的性能,以及在MVC大规模应用中什么是最好的方法。

实际上可以保证非反射版本会更快,因为它需要做的工作更少。然而,我预计差异会非常小。我用两个不同的模板做了一些基本的测试。

模板1使用Html帮助:

@for (int i = 0; i < 10000; i++)
{
    @Html.EditorFor(model => model.FieldName)  
}

模板2使用纯HTML:

@for (int i = 0; i < 10000; i++)
{
    <input id="FieldName" class="text-box single-line" type="text" value="" name="FieldName" data-val-required="FieldName is required." data-val="true" />
}

为了测试性能,我使用了MiniProfiler库,它可以让我们了解渲染模板所花费的时间。当对结果求平均值时,我得到以下值:

  • 模板1(带HTML助手):405.8 ms
  • 模板2(纯HTML): 82.1 ms
因此,差值为323.7 ms,差值为5倍。然而,我们使用10000次迭代完成了测试,这可能不是模板中的默认行为。如果我们将模板更改为更合理的默认值,如10次,我们会得到以下结果:
  • 模板1(带HTML助手):3.7 ms
  • 模板2(纯HTML): 0.5 ms

现在您仍然可以看到一些差异(3.2 ms),但在我看来,这是可以忽略不计的。在这一点上,我不会看性能,而只看你喜欢什么风格。如果您想完全控制HTML,请使用纯HTML版本。如果您想拥有HTML帮助器提供的所有额外功能(比如自动将注释转换为jQuery验证属性),请使用该方法。在大多数情况下,这两种方法之间的差异足够小,不会产生太大的影响。

相关内容

  • 没有找到相关文章

最新更新