ASP.NET производительность бритвы MVC 3


важное обновление: см. обновление 5 внизу нет проблем с производительностью asp.net mvc 3, это тестовый вопрос

Я сделал простой проект hello world в asp.net mvc2,3 aspx и 3 razor и сравнивали их. Вот что я вижу:

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. Все проекты сделано с добавлением нового пустого проекта 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 (обычно есть много кэша тюнинг мы делаем). Мы ожидаем, что razor будет такой же производительности, как и .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.конфигурационный файл (который также влияет на сборки выпуска), после изменения его на false, проблема исправлена. И это интересно, как это влияет только на бритву шаблонов в этом масштабе. Это должно быть в нашем уме на развертываниях.

System         Requests per second   CPU Utilization
----------------------------------------------------
mvc 3 rc2 razor               3940               58%
mvc 3 rc2 aspx                4100               58%

спасибо к asp.net команда mvc, отличная работа!

2 63

2 ответа:

(новый ответ, чтобы ответить на ваши номера RC2)

Спасибо за обновленные номера. Несколько моментов:

  1. ваши номера Aspx выглядят хорошо, в том смысле, что мы ожидаем, что MVC3 Aspx будет на одном уровне с MVC2 Aspx (ожидается немного медленнее в таком примере Hello World)
  2. ваши номера бритвы выглядят подозрительно. Мы знаем, что Razor немного медленнее, чем эквивалентный Aspx, однако разница должна быть не более 5% -7%. Ваши цифры указывают на 50% медленнее, что просто не совпадает с нашими результатами. Проверьте, если проект компилируется в релизе и у вас есть debug="false" в web.конфиг.
  3. использование вашего процессора немного подозрительно. С 1000 одновременных запросов процессор должен быть utlized 100%. (Даже только 8 одновременных запросов должно быть достаточно, так как у вас есть 8 виртуальных ядер)
  4. тесты выполняются в течение около 20-25 секунд. Это немного на низкой стороне, потому что короткий (1-2 секунды) всплеск активности в другом месте системы может скиньте ваши результаты довольно значительно.
  5. в связи с пунктом 4, вы запускали каждый сценарий один или несколько раз? Вы видите много различий в результатах? Поскольку ваша ОС делает другие вещи в фоновом режиме, типично видеть разные результаты между запусками.

Как вы выполнили тест? Был ли ваш сайт развернут на IIS в режиме выпуска? Вы используете <deployment retail="true" /> раздел в вашей машине.конфиг? Также помните, что ASP.NET MVC 3 все еще находится в стадии интенсивной разработки, поэтому вы не можете ожидать, что он будет полностью оптимизирован. По крайней мере, подождите, пока он не попадет в RTM.