2008-09-04 3 views
100

Я нашел несколько диких замечаний о том, что ASP.NET MVC в 30 раз быстрее, чем ASP.NET WebForms. Какая реальная разница в производительности, это было измерено и каковы преимущества производительности.Производительность ASP.NET MVC

Это поможет мне рассмотреть возможность перехода от ASP.NET WebForms к ASP.NET MVC.

+19

После работы с WebForms с тех пор, как они вышли, я никогда не вернусь! MVC украл мой <3 - и этот сайт работает на Beta 5! – 2009-02-11 10:19:23

+2

Что со всеми версиями откатов по этому вопросу ..? – Nick 2009-02-24 15:47:53

+0

@Nick: OP откатывает любые изменения и удаляет любые комментарии, объясняющие их. – GEOCHET 2009-02-24 15:50:26

ответ

68

Мы не выполнили тип масштабируемости и перфекционные тесты, необходимые для выработки каких-либо выводов. Я думаю, что ScottGu, возможно, обсуждали потенциальные первоочередные цели. По мере продвижения к бета-версии и RTM, мы будем внутренне проводить более перфорированное тестирование. Однако я не уверен, что наша политика заключается в публикации результатов перфекционных тестов.

В любом случае, любые такие тесты действительно нужно рассматривать реальных приложений ...

+13

Теперь, когда был выпущен MVC, есть ли какие-либо обновления по выпуску результатов? – chris 2009-04-24 17:23:37

+6

Просто голосуя за это, потому что оценка 5999 репутаций раньше была больно моим глазам :( – Damien 2009-05-01 10:09:15

+2

К этому времени у вас наверняка есть некоторые цифры. Уточните свой ответ? Или вы обнаружили, что это надоедливая политика запрещает? – tvanfosson 2010-06-10 11:28:37

12

У Rick Strahl есть некоторые мысли о производительности ASP.NET MVC в What's Ailing ASP.NET Web Forms.

+0

@Espo Спасибо. Очень интересная статья, хотя он не затрагивает различия в производительности между ними. – GateKiller 2009-02-10 14:48:34

6

Единственные конкретные цифры, я могу найти которые с раннего ASP.NET MVC-разработки на этом форуме-нить:

http://forums.asp.net/p/1231621/2224136.aspx

сам Роб Коннери несколько подтверждает утверждение, что ScottGu утверждает, что ASP. NET MVC может обслуживать 8000 запросов в секунду.

Возможно, Джефф и его команда могут дать какой-то намек на их разработку этого сайта.

42

Он снизился один из моих страниц с полезной нагрузкой 2MB, до 200k, просто за счет устранения ViewState и делает его терпимым к работе программно с представленным выходом.

Размер один, хотя обработка была одинаковой, создаст значительные улучшения в соединениях в секунду и скорости запросов.

2

На самом деле нет способа ответить на этот вопрос. MVC по умолчанию использует механизм просмотра Web Forms и может быть настроен на использование любого количества настраиваемых механизмов просмотра, поэтому, если вы хотите сравнить производительность, вам нужно быть более конкретным.

14

Мое тестирование показывает что-то между 2x и 7x больше req/sec на MVC, но зависит от того, как вы создаете приложение для веб-форм. Имея только «привет мир» текст на нем, без какого-либо контроля на стороне сервера, mvc примерно на 30-50% быстрее.

12

Для меня реальное улучшение производительности в MVC - это увеличение проверяемой поверхности приложения. В WebForms было много приложений, которые трудно было проверить. С MVC количество кода, которое становится проверяемым, в основном удваивается. В основном все, что трудно проверить, - это код, который генерирует макет. Вся ваша логика бизнес-логики и доступа к данным, включая логику, которая заполняет фактические данные, используемые в представлении, теперь поддается тестированию. В то время как я ожидаю, что это будет более результативным, - жизненный цикл страницы значительно упрощается и более поддается веб-программированию - даже если бы он был таким же или немного медленнее, стоило бы перейти с точки зрения качества.

46

Я думаю, что это будет трудный вопрос, чтобы окончательно ответить, как так много будет зависеть от А) как реализовать приложение WebForms, и B) как реализовать приложение MVC. В своих «сырых» формах MVC, скорее всего, быстрее WebForms, но многолетние инструменты и опыт позволили создать ряд методов для создания быстрых приложений WebForms. Я готов поспорить, что старший ASP.NET может создать приложение WebForms, которое будет конкурировать со скоростью любого приложения MVC, или, по крайней мере, добиться незначительной разницы.

Настоящая разница - as @tvanfosson suggested - находится в контрольной и чистой SoC. Если повысить производительность - это ваша главная забота, я не думаю, что это отличная причина для перехода на корабль на WebForms и начать реорганизацию в MVC. По крайней мере, пока вы не попробуете доступные методы оптимизации WebForms.

29

Я думаю, что многие люди, которые считают, что WebForms по своей сути медленны или ресурсоемкими, ставят вину в неподходящее место. 9 раз из 10, когда меня привлекают для оптимизации приложения webforms, есть слишком много мест, где авторы приложений неправильно понимают цель viewstate. Я не говорю, что viewstate идеально подходит или что-то еще, но слишком легко злоупотреблять им, и именно это злоупотребление вызывает раздутое поле viewstate.

Эта статья была недействительной, помогая мне понять многие из этих злоупотреблений. http://weblogs.asp.net/infinitiesloop/archive/2006/08/03/truly-understanding-viewstate.aspx

Для правильного сравнения между MVC и WebForms мы должны быть уверены, что оба приложения правильно используют архитектуры.

2

Я начал работать в MVC около года назад, я был вдохновлен, но не впечатлен.

Я ненавижу состояние представления и рассматриваю его как корень всего зла с точки зрения ASP.NET. Вот почему я просто не использую его и совершенно честен, почему бы вам?

Я взял концепцию ASP.NET MVC Framework и построил ее по-своему. Однако я изменил пару вещей. Я построил код для управления контроллером или код маршрутизации URL-адресов вокруг динамической перекомпиляции.

Теперь я бы сказал, что приложения ASP.NET MVC будут быстрее, основываясь на том, как вы его используете. Если вы полностью откажетесь от WebForms, вы будете быстрее, потому что жизненный цикл и объектная модель ASP.NET являются огромными.

Когда вы пишете, вы создаете армию ... нет ожидания, легион объектов, которые будут участвовать в рендеринге вашего вида. Это будет медленнее, чем если вы хотите выразить минимальное количество действий на самой странице ASPX. (Мне не нравится абстрактная абстракция, потому что поддержка ASPX-страниц в Visual Studio приличная, но я полностью потерял WebForms как концепцию и, в основном, любую структуру ASP.NET из-за раздувания кода или неспособности изменить вещи, которые подключают мое приложение).

Я нашел способы полагаться на динамическую перекомпиляцию (System.Reflection.Emit) для испускания объектов специального назначения и кода, когда это необходимо. Выполнение этого кода происходит быстрее, чем отражение, но изначально построено через службу отражения. Это придает моей MVC ароматизированной структуре отличную производительность, но также очень статически типизировано. Я не использую строки и пары имен/значений. Вместо этого мои пользовательские службы компилятора переписывают сообщение формы, когда действие контроллера передается ссылочным типом. За сценой происходит много вещей, но этот код выполняется быстро, намного быстрее, чем WebForms или MVC Framework.

Кроме того, я не пишу URL-адреса, я пишу лямбда-выражения, которые переводятся в URL-адреса, которые позже сообщают, какое действие контроллера нужно вызвать. Это не особенно быстро, но он бьет по сломанным URL-адресам. Это похоже на то, что у вас были статически типизированные ресурсы, а также статически типизированные объекты. Статически типизированное веб-приложение? Это то, что я хочу!

Я бы рекомендовал больше людей попробовать это.

7

Я думаю, проблема здесь в том, что независимо от того, насколько быстрее ASP.Net MVC, чем старые веб-формы, не будет иметь никакого значения, потому что большая часть времени взята в базе данных. В большинстве случаев вы, веб-серверы, будете сидеть при 0-10% использования ЦП, просто ожидая вашего сервера базы данных. Если вы не получите чрезвычайно большое количество обращений на вашем сайте, и ваша база данных будет очень быстрой, вы, вероятно, не заметите большой разницы.

2

Проекты, созданные с помощью Visual Studio. Один из них - шаблон mvc4, другой - WebForm (tranditional). И когда выполняется проверка нагрузки с помощью WCAT, это результат,

MVC4 довольно медленный, чем WebForms, любые идеи?

enter image description here

MVC4

  • может получить около 11 RPS
  • RPS довольно низок как 2-CPU или 4-ЦП сервера

enter image description here

WebForms (aspx)

  • мог получить выше 2500 оборотов в секунду

  • производительность убийцы было установлено, что это ошибка в MVC Бата или RC. И производительность будет улучшена, как только я удалю Bundles вещи. Теперь последняя версия исправила это.

1

Производительность зависит от того, что вы делаете ... Обычно MVC быстрее, чем asp.net в основном потому, что ViewState отсутствует и потому, что MVC работает больше с Callback, чем Postback по умолчанию.

Если вы оптимизируете свою страницу веб-формы, вы можете иметь такую ​​же производительность, как MVC, но это будет очень много работы.

Кроме того, у них много nugets для MVC (а также для Webform), чтобы помочь вам улучшить производительность веб-сайта, например, объединить и минимизировать ваши css и javascripts, группировать изображения и использовать их как спрайт и т. Д.

Производительность сайта зависит от вашей архитектуры. Чистый, с хорошим разделением внимания, принесет вам более чистый код и лучшее представление о том, как повысить производительность.

Вы можете посмотреть этот шаблон "Neos-SDI MVC Template", который по умолчанию создаст для вас чистую архитектуру с большим количеством улучшений производительности (отметьте MvcTemplate на сайте).

4

Вопреки принятому мнению, оптимизированное использование веб-форм полностью убивает MVC с точки зрения производительности. Webforms был оптимизирован для оптимизации работы html намного дольше, чем MVC.

Метрик доступны на http://www.techempower.com/benchmarks/#section=data-r7&hw=i7&test=db

Каждой сравнения MVC находится на ниже среднее/низкое верхнего ранжировании списка, в то время как места использования оптимизированного WebForms в верхнем среднем/верхнем нижнем рейтинге.

Анекдотическая, но очень серьезная проверка этих показателей, www.microsoft.com обслуживается веб-формами, а не MVC. Кто-нибудь здесь считает, что они не выбрали бы MVC, если бы это было эмпирически быстрее?

-1

enter image description here

Я сделал небольшой тест VSTS нагрузки эксперимент с некоторым основным кодом и нашел время отклика ASP.NET MVC в два раза быстрее по сравнению с ASP.NET WebForms. Выше приведен график с графиком.

Вы можете прочитать этот тестовый эксперимент нагрузки в деталях от этого CP статей http://www.codeproject.com/Articles/864950/ASP-NET-MVC-vs-ASP-NET-WebForm-performance-compari

Испытания проводились с использованием ниже спецификациями VSTS и тест нагрузки Telerik программного обеспечения: -

нагрузки пользователя 25 пользователей.

Продолжительность испытания составила 10 минут.

машина конфигурации DELL 8 GB Ram, Core i3

Проект был организован в IIS 8.

Проект был создан с использованием MVC 5.

подключения к сети LAN предполагалось. Таким образом, этот тест пока не учитывает сетевое отставание.

Браузер в тесте выбрал Chrome и Internet explorer.

Многократное считывание, которое принимается во время теста, чтобы определить средние неизвестные события. 7 показаний, в которых они сделаны, и все чтения публикуются в этой статье в виде чтений 1, 2 и т. Д.

Смежные вопросы