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 ответа:
(новый ответ, чтобы ответить на ваши номера RC2)
Спасибо за обновленные номера. Несколько моментов:
- ваши номера Aspx выглядят хорошо, в том смысле, что мы ожидаем, что MVC3 Aspx будет на одном уровне с MVC2 Aspx (ожидается немного медленнее в таком примере Hello World)
- ваши номера бритвы выглядят подозрительно. Мы знаем, что Razor немного медленнее, чем эквивалентный Aspx, однако разница должна быть не более 5% -7%. Ваши цифры указывают на 50% медленнее, что просто не совпадает с нашими результатами. Проверьте, если проект компилируется в релизе и у вас есть
debug="false"
в web.конфиг.- использование вашего процессора немного подозрительно. С 1000 одновременных запросов процессор должен быть utlized 100%. (Даже только 8 одновременных запросов должно быть достаточно, так как у вас есть 8 виртуальных ядер)
- тесты выполняются в течение около 20-25 секунд. Это немного на низкой стороне, потому что короткий (1-2 секунды) всплеск активности в другом месте системы может скиньте ваши результаты довольно значительно.
- в связи с пунктом 4, вы запускали каждый сценарий один или несколько раз? Вы видите много различий в результатах? Поскольку ваша ОС делает другие вещи в фоновом режиме, типично видеть разные результаты между запусками.
Как вы выполнили тест? Был ли ваш сайт развернут на IIS в режиме выпуска? Вы используете
<deployment retail="true" />
раздел в вашей машине.конфиг? Также помните, что ASP.NET MVC 3 все еще находится в стадии интенсивной разработки, поэтому вы не можете ожидать, что он будет полностью оптимизирован. По крайней мере, подождите, пока он не попадет в RTM.