2010-02-17 50 views
2

我嘗試使用一些技術,包括URL生成調整一拉優化我的ASP.NET MVC應用程序:http://www.chadmoran.com/blog/2009/4/23/optimizing-url-generation-in-aspnet-mvc-part-2.html速度差

如果使用RouteValueDictionary代替匿名類之間的速度差異非常大,那麼在定義html屬性時,我還應該使用Dictionary來代替匿名類嗎?

例如,我應該這樣做:

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

或者我應該做這個進一步優化:

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

我知道這是更快的使用Url.Action,或更好,但對使用RouteLink技術,但我只是想知道是否應該爲了速度而完全避免匿名類。

回答

5

是的,它使用字典更快。

它是否足夠快有所作爲?只有一個分析器可以告訴你,爲你的應用。我建議,如果它真的有所作爲,那麼你應該緩存你的視圖結果。

我傾向於堅持使用字典的版本,但因爲強類型有助於通過insane mess of overloads to ActionLink削減。通過一個object使得它方式太容易結束與錯誤的過載。速度只是一個獎金。

+3

+1提_per application_分析,雖然這整個辯論好像微優化給我。如果你的網站沒有負載,那麼我懷疑在淨吞吐量方面的性能收益是否有意義。如果你的網站負載下,然後有機會,遠遠更多資源被花了渲染視圖服務DB請求,所以吞吐量的淨收益可能仍然較低。只有一個分析器和一個代表性的負載測試肯定會說:) – 2010-02-17 19:05:23