2010-09-30 6 views
62

Важное обновление: см обновление 5 на дне нет проблем с производительностью в ASP.NET MVC 3, это ориентир вопросASP.NET MVC 3 Razor производительность

Я сделал простой привет мир проект в 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 с интегрированным режимом. Все проекты выполняются с добавлением нового пустого x-проекта и добавлением 1 страницы с 1 строковым текстом и без кода. все сайты скомпилированы в режиме выпуска. Моя система - это окна 7, 4 gb i7 4 ядра. Я проверил тест 2 раза, чтобы разогреть iis, и это результаты второго запуска. Параметры стендовых Apache: абы -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% 

Update 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% 

Update 5 все испытания сделанных в режиме релиза, но проблема была debug="true" в моем файле web.config (который также эффекты релиз сборки), после изменения его к ложным, выпуск фиксировано. И интересно, как это влияет только на бритва templating в этом масштабе. Это должно иметь в виду развертывание.

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

Благодаря команде asp.net mvc, отличная работа!

+10

Как вы выполняли бенчмарк? Был ли ваш сайт развернут в IIS в режиме Release? Вы использовали функцию ''

+0

+1 Дарин - не может быть полностью оптимизирован продукт в альфа-бета-стадиях. – Oded

+0

Это отличный ответ, почему бы вам представить его как комментарий? – Slavo

ответ

25

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

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

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

большое спасибо Marcind, # 2 решил проблему, я скомпилирован в режиме выпуска во всех тестах, но не установил debug = true в web.config. При установке этого параметра ложное решение проблемы. Я обновляю свой вопрос об этом, а также оставляю комментарии к блогу хакера. rpc в бритве - 3940 после этого chage. – sirmak

+3

Нет проблем. Вы должны быть осторожны при измерении perf. – marcind

19

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

+0

Да в режиме деблокирования на iis 7.5. Я тестировал с помощью ab (тест Apache) и запускал 50 000 запросов с 500 - 1000 клиентами. Я тестировал его два раза, и эти цифры являются вторыми результатами (первые из них ниже). Я знаю, что он находится в разработке, но не уверен, что после оптимизации возможно увеличение производительности на 3 раза. – sirmak

+0

Почему вы уверены, что оптимизация 3x невозможна? Команда ASP.NET уже заявила, что парсер Razor еще не оптимизирован. –

+0

Бета-версия 1 и бритвенные диски упали до 1550. – sirmak