Хэлперы (helpers) в ASP.NET MVC и производительность

m-r Tarakanoff 2011 M06 22
1344
1
0
0

В маниакальной погоне за производительностью в веб-приложениях 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).

Оцените пост

-4

Комментарии

-4
В этом тесте обнаружилась большая неточность. Не только вызов функции хелпера занимает дополнительные ресурсы, но и сам хелпер RouteUrl, по своему алгоритму, является очень "тяжелым", поскольку он выполняет поиск по таблице путей, используя шаблоны и регулярные выражения.
Показать комментарии