Разница в скорости между анонимным классом и IDictionary <string, object> для htmlAttributes в ASP.NET MVC - PullRequest
2 голосов
/ 17 февраля 2010

Я пытаюсь оптимизировать свое приложение ASP.NET MVC, используя некоторые методы, которые включают в себя создание URL-адреса, настраиваемое как: http://www.chadmoran.com/blog/2009/4/23/optimizing-url-generation-in-aspnet-mvc-part-2.html

Если разница в скорости настолько велика между использованием RouteValueDictionary вместо анонимных классов, то должен ли я также использовать словарь вместо анонимных классов при определении атрибутов HTML?

Например, я должен сделать это:

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, но мне просто интересно, следует ли полностью избегать анонимных классов ради скорости.

1 Ответ

5 голосов
/ 17 февраля 2010

Да, словарь быстрее использовать.

Достаточно ли быстро, чтобы изменить ситуацию? Только профилировщик может сказать вам, что для вашего приложения . Я бы предположил, что если это действительно имеет значение, то вы все равно должны кэшировать результаты своего просмотра.

Я склонен придерживаться версий словаря, потому что строгая типизация помогает сократить безумный перегрузок до ActionLink. Передача object делает его way слишком легким, чтобы в конечном итоге получить неправильную перегрузку. Скорость это просто бонус.

...