ASP.NET MVC中htmlAttributes的匿名类和IDictionary <string,object>之间的速度差异

Chr*_*s F 2 html url asp.net-mvc anonymous-class

我正在尝试使用一些技术来优化我的ASP.NET MVC应用程序,这些技术包括调整URL生成:http://www.chadmoran.com/blog/2009/4/23/optimizing-url-generation-in-aspnet- MVC-部分2.HTML

如果使用RouteValueDictionary代替匿名类之间的速度差异很大,那么在定义html属性时我是否还应该使用Dictionary代替匿名类?

例如,我应该这样做:

Html.ActionLink("LinkName", "Action", "Controller",
                new RouteValueDictionary { { "id", Model.Id } },
                new { @class = "someCSSClass" })
Run Code Online (Sandbox Code Playgroud)

或者我应该通过这样做进一步优化:

Html.ActionLink("LinkName", "Action", "Controller",
                new RouteValueDictionary { { "id", Model.Id } },
                new Dictionary<string, object> { { "class", "someCSSClass" } })
Run Code Online (Sandbox Code Playgroud)

我知道使用Url.Action更快,或者更好地使用RouteLink技术,但我只是想知道为了速度,是否应该完全避免使用匿名类.

Cra*_*ntz 5

是的,使用词典会更快.

它是否足够快有所作为?对于您的应用程序,只有分析器可以告诉您.我建议如果它实际上有所不同,那么你应该缓存你的视图结果.

不过,我倾向于坚持使用词典版本,因为强大的打字有助于消除过多ActionLink疯狂混乱.传递一个object使它的方式太容易使用错误的过载而告终.速度只是一个奖励.

  • +1提及_per application_ profiling,虽然整个辩论对我来说似乎是微优化.如果您的网站没有负载,那么我怀疑性能增益在净吞吐量方面是否有意义.如果您的站点处于负载状态,则可能会比渲染视图花费更多的资源来处理数据库请求,因此吞吐量的净增益可能仍然很低.只有剖析器和代表性负载测试肯定会说:) (3认同)