ASP.NET MVC Performance - PullRequest
       38

ASP.NET MVC Performance

102 голосов
/ 04 сентября 2008

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

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

Ответы [ 14 ]

68 голосов
/ 05 сентября 2008

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

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

48 голосов
/ 10 февраля 2009

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

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

42 голосов
/ 05 сентября 2008

Это уменьшило одну из моих страниц с 2 МБ полезной нагрузки до 200 КБ, просто исключив состояние просмотра и сделав его переносимым программно для работы с отправленным выводом.

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

29 голосов
/ 10 февраля 2009

Я думаю, что многие из тех, кто считает веб-формы медленными или ресурсоемкими, обвиняют не в том месте. В 9 случаях из 10, когда меня привлекают для оптимизации приложения веб-форм, слишком много мест, где авторы приложений неправильно понимают цель состояния просмотра. Я не говорю, что обзорное состояние идеально или что-то в этом роде, но СЛИШКОМ легко злоупотреблять им, и именно это злоупотребление вызывает раздутое поле просмотра.

Эта статья была неоценимой, помогая мне понять многие из этих злоупотреблений. https://weblogs.asp.net/infinitiesloop/truly-understanding-viewstate

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

14 голосов
/ 22 октября 2008

Мое тестирование показывает, что в MVC от 2x до 7x больше требований / сек, но это зависит от того, как вы строите свое веб-приложение. С текстом «hello world» без какого-либо контроля со стороны сервера mvc работает примерно на 30-50% быстрее.

12 голосов
/ 10 февраля 2009

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

7 голосов
/ 11 февраля 2009

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

6 голосов
/ 05 сентября 2008

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

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

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

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

4 голосов
/ 28 ноября 2013

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

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

Каждый отдельный mvc сравнения находится в нижнем среднем / нижнем верхнем рейтингах списка, тогда как оптимизированные места использования веб-форм в верхнем среднем / верхнем нижнем рейтинге.

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

2 голосов
/ 15 октября 2012

Проекты, созданные с Visual Studio. Один из них - шаблон mvc4, другой - WebForm (традиционный). И когда сделать нагрузочный тест с WCAT, это результат,

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

enter image description here

MVC4

  • может получить около 11 об / с
  • rps довольно низкий как для 2-процессорного, так и для 4-процессорного сервера

enter image description here

WebForms (aspx)

  • может быть выше 2500 об / с

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...