ASP.NET MVC 3 Razor Performance
-
26-09-2019 - |
Вопрос
Важное обновление: см. Обновление 5 на дне, нет проблем с производительностью в ASP.NET MVC 3, это тестовая проблема
Я сделал простой Hello World Project в ASP.NET MVC2,3 ASPX и 3 бритва и сравнивал их. Что я вижу:
System Requests per second
-------------------------------------------
asp.net mvc 2 ASPX 4200
asp.net mvc 3 Beta 1 ASPX 3200
asp.net mvc 3 Beta 1 Razor 1700
Что не так с бритвенным, это так медленно?
Обновлять:Я переделал тест. Все 4 тестовые виртуальные каталоги используют один и тот же пул приложения .NET 4 .NET 4. Все проекты выполняются с добавлением нового пустого проекта X и добавление 1 страницы с 1 линейной текстом и без кода. Все сайты скомпилированы в режиме выпуска. Моя система Windows 7, 4 ГБ I7 4 ядра. Я запускаю тест 2 раза, чтобы прогреться IIS, и это второй результаты запуска. Параметры скамейки Apache: AB -N100000 -C1000 результатов:
System Requests per second CPU Utilization
----------------------------------------------------
asp.net 4 4780 43%
mcv 2 4322 58%
mvc 3 beta 1 aspx 2324 54%
mvc 3 beta 1 razor 1615 54%
Обновление 2. Скотт Гутри ответил в своем блоге:
Мы еще не полностью оптимизировали MVC3 (обычно мы обычно много настроек кэша). Мы ожидаем, что бритва будет одинаковую производительность, что и двигатель просмотра .aspx, прежде чем он наконец будет выпущен.
System Requests per second CPU Utilization
----------------------------------------------------
mvc 3 rc1 razor 1960 54%
mvc 3 rc2 razor 2187 54%
mvc 3 rc2 aspx 4014 58%
Обновление 5. Все тесты, сделанные в режиме выпуска, но проблема была debug="true"
В моем файле Web.config (которые также эффекты выпускают сборки), после изменения его в FALSE, выпуск фиксирован. И интересно, как это влияет только на шаблон бритвы в этой шкале. Это должно быть в нашем разуме о развертывании.
System Requests per second CPU Utilization
----------------------------------------------------
mvc 3 rc2 razor 3940 58%
mvc 3 rc2 aspx 4100 58%
Благодаря команде ASP.NET MVC, отличная работа!
Решение
(новый ответ, чтобы ответить на ваши номера RC2)
Спасибо за обновленные номера. Несколько очков:
- Ваши номера ASPX выглядят хорошо, в том смысле, что мы ожидаем, что MVC3 ASPX будет наравне с MVC2 ASPX (немного медленнее в таком примере мирового примера Hello)
- Ваши бритвы выглядят подозрительно. Мы знаем, что бритва немного медленнее, чем эквивалентный ASPX, однако разница должна быть не более 5% -7%. Ваши цифры указывают на 50% медленнее, что просто не совпадает с нашими результатами. Проверьте, включают ли проект в выпуске, и у вас есть
debug="false"
набор в web.config. - Ваше утилизация CPU немного подозревается. С 1000 одновременных запросов CPU следует поднимать 100%. (Даже только 8 одновременных запросов должны быть достаточно, так как у вас есть 8 виртуальных ядер)
- Ваши тесты работают около 20-25 секунд. Это немного на нижней стороне, потому что короткая (1-2 секунды) взрыв активности в другом месте в системе может сравниться с вашими результатами.
- Связанные с пунктом 4, вы запускали каждый сценарий один или несколько раз? Вы видите много различий в результатах? Поскольку ваша ОС делает другие вещи на заднем плане, это типично видеть разные результаты между прогонами.
Другие советы
Как вы выполнили ориентир? Был ли ваш сайт развернут на IIS в режиме Release? Вы использовали <deployment retail="true" />
Раздел в вашей машине .Config? Также помните, что ASP.NET MVC 3 все еще находится под тяжелым развитием, поэтому вы не можете ожидать, что он будет полностью оптимизирован. По крайней мере, подождите, пока он не ударит RTM.