В маниакальной погоне за производительностью в веб-приложениях ASP.NET MVC, мы, наконец, добираемся и до представлений (шаблонов).
Производительность рендеринга (вывод в поток исходного кода HTML) представлений.
Как обычно, Майкрософт стремится к универсальности и потому разработала богатый набор хелперов для ASP.NET MVC (Html-helpers, Url-helpers, строготипизированные хелперы и т.п.)Штука, несомненно (!) очень удобная, но посмотрим, например, на производительность UrlHelper`а. При количестве зарегистрированных маршрутов (routes) — 3 и выводимых на страницу ссылок — 100, мы используем в итерации удобный RouteUrl("RouteName", new { parameter = "value" }) и получаем время рендеринга страницы:
Time taken: 0,0055 sec (183) req/sec
А теперь без использования RouteUrl (т.е. просто печатаем маршрут хардкодом, вставляя необходимые параметры из переменной блока итерации /routename/?parameter=value:
Time taken: 0,0004 sec (2488) req/sec
Мне встречались представления, где практически отсутствовал HTML-код. Все теги элементов (чекбоксы, поля форм, кнопки и пр.) отрисовывались с использованием хелперов).
Причем, многие хелперы по своей сложности (логике) не уступали пользовательским элементам управления в ASP.NET Web Forms (UserControl).