#asp.net-mvc
#asp.net-mvc
Вопрос:
После того, как запрос был скомпилирован и вызван несколько раз, есть ли разница в производительности между :
public ActionResult Index()
{
return View("~/Views/Index.cshtml");
}
И
public ActionResult Index() {
var sb = new StringBuilder();
sb.Append("<html><body>Bla bla bla bla</body></html>");
return Content(sb.ToString());
}
Я чувствую, что при использовании он есть.
Является ли скомпилированный код, полученный в результате синтаксического анализа Razor, приблизительно таким же, как при использовании stringbuilder, или совершенно другим?
Комментарии:
1. Почему бы вам самому не проверить разницу в производительности и не выяснить?
Ответ №1:
Ответ зависит от того, какой контент содержится в представлении. Раньше я Glimpse
измерял время для рендеринга Index()
метода, один раз используя View()
и возвращая другой Content()
с приведенным вами образцом HTML. В обоих случаях время было примерно одинаковым — примерно 300-400 мс в каждом. Однако, как только я поместил некоторый HTML в представление, для завершения запроса потребовалось немного больше времени, скажем, 600-700 мс.
В целом я бы сказал, что использование Content()
может быть немного быстрее, поскольку при его возврате не задействован анализатор Razor.
Комментарии:
1. Определенно быстрее, я установил Glimpse, как вы упомянули, и со сложным рендерингом Razor по сравнению с тем же кодом, который отображается вместе с вычислениями внутри рутинного построения StringBuilder, о котором мы говорим, по крайней мере, в 2 раза быстрее для рендеринга чистого содержимого StringBuilder.