ASP.NET wydajność MVC

Znalazłem kilka dzikich uwag, które ASP.NET MVC jest 30x szybszy niż ASP.NET WebForms. Jaka jest realna różnica w wydajności, czy została ona zmierzona i jakie są korzyści z wydajności.

To ma mi pomóc w rozważeniu przejścia z ASP.NET WebForms to ASP.NET MVC.

Author: GEOCHET, 2008-09-04

14 answers

Nie przeprowadziliśmy testów skalowalności i perf niezbędnych do wyciągnięcia jakichkolwiek wniosków. Myślę, że ScottGu mógł omawiać potencjalne cele. W miarę zbliżania się do wersji Beta i RTM, wewnętrznie będziemy przeprowadzać więcej testów perf. Nie jestem jednak pewien, jaka jest nasza polityka dotycząca publikowania wyników testów perf.

W każdym razie, wszelkie tego typu testy naprawdę muszą brać pod uwagę rzeczywiste zastosowania...

 68
Author: Haacked,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-16 10:41:56

Myślę, że będzie to trudne pytanie do ostatecznej odpowiedzi, ponieważ tak wiele zależy od A) Jak zaimplementujesz aplikację WebForms i B) Jak zaimplementujesz aplikację MVC. W swoich "surowych" formach, MVC jest prawdopodobnie szybszy niż WebForms, ale lata i lata narzędzi i doświadczenia stworzyły wiele technik tworzenia szybkich aplikacji WebForms. Założę się, że starszy ASP.NET programista może wyprodukować aplikację WebForms, która konkuruje z szybkością z dowolnego zastosowania MVC-lub przynajmniej osiągnąć znikomą różnicę.

Prawdziwa różnica - jak zasugerował @ tvanfosson - polega na testowalności i czystym SoC. Jeśli poprawa wydajności jest twoim głównym zmartwieniem, nie sądzę, że jest to świetny powód, aby skakać na formularzach internetowych i zacząć od nowa budować w MVC. Przynajmniej dopóki nie wypróbujesz dostępnych technik optymalizacji formularzy internetowych.

 48
Author: Todd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 10:31:27

Zmniejszył jedną z moich stron z 2MB ładunku do 200k, po prostu eliminując viewstate i czyniąc go znośnym programowo do pracy z przesyłanym wyjściem.

Sam rozmiar, nawet jeśli przetwarzanie było takie samo, spowoduje znaczną poprawę połączeń na sekundę i szybkości żądań.

 42
Author: DevelopingChris,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-05 16:24:16

Myślę, że wielu ludzi, którzy uważają, że formularze internetowe są z natury powolne lub zasobochłonne, obwinia się w niewłaściwym miejscu. 9 razy na 10 Kiedy jestem wprowadzany w celu optymalizacji aplikacji webforms, jest zbyt wiele miejsc, w których autorzy aplikacji źle rozumieją cel viewstate. Nie mówię, że viewstate jest idealny, ale zbyt łatwo jest go nadużywać i to właśnie nadużycie powoduje rozdęte pole viewstate.

Ten artykuł był nieoceniona w pomaganiu mi zrozumieć wiele z tych nadużyć. https://weblogs.asp.net/infinitiesloop/truly-understanding-viewstate

Aby dokonać poprawnego porównania pomiędzy MVC i WebForms musimy mieć pewność, że obie aplikacje poprawnie używają tych architektur.

 29
Author: Ariel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-18 12:34:27

Moje testy pokazują coś między 2x a 7x więcej req / s na MVC, ale to zależy jak zbudujesz swoją aplikację webforms. Z tekstem" hello world", bez żadnej kontroli po stronie serwera, mvc jest o 30-50% szybszy.

 14
Author: Hrvoje Hudo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-22 14:40:53

Dla mnie prawdziwą "poprawą wydajności" w MVC jest zwiększenie testowalnej powierzchni aplikacji. Z WebForms było wiele aplikacji, które były trudne do przetestowania. Dzięki MVC ilość kodu, który staje się testowalny, w zasadzie podwaja się. Zasadniczo wszystko, co nie jest łatwe do przetestowania, to kod generujący układ. Cała logika biznesowa i logika dostępu do danych-w tym logika, która zapełnia rzeczywiste dane używane w widoku-jest teraz podatna na testowanie. While I spodziewaj się, że będzie również bardziej wydajny-cykl życia strony jest znacznie uproszczony i bardziej podatny na programowanie internetowe-nawet jeśli byłoby to takie samo lub trochę wolniejsze, warto byłoby przejść na nie z perspektywy jakości.

 12
Author: tvanfosson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-02-10 02:54:11

Myślę, że problem polega na tym, że bez względu na to, jak szybko ASP.Net MVC jest niż stare formularze internetowe, to nie zrobi różnicy, ponieważ większość czasu zajmuje w bazie danych. Przez większość czasu Serwery WWW będą siedzieć przy 0-10% zużyciu procesora tylko czeka na serwerze bazy danych. Jeśli nie uzyskasz niezwykle dużej liczby odwiedzin na swojej stronie, a twoja baza danych jest niezwykle szybka, prawdopodobnie nie zauważysz dużej różnicy.

 7
Author: Kibbee,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-02-11 15:54:04

Jedyne konkretne liczby, które mogę znaleźć, które są z początku ASP.NET MVC-development jest na tym forum-wątek:

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

Sam Rob Connery potwierdza nieco stwierdzenie, że ScottGu twierdził, że ASP.NET MVC może obsłużyć 8000 żądań na sekundę.

Może Jeff i jego ekipa dadzą jakąś podpowiedź z ich rozwoju tej strony.

 6
Author: Seb Nilsson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-05 12:06:29

Wbrew przyjętej opinii, Zoptymalizowane wykorzystanie webforms całkowicie zabija MVC pod względem surowej wydajności. Webforms został zoptymalizowany pod kątem obsługi html o wiele dłużej niż MVC.

Metryki są dostępne na http://www.techempower.com/benchmarks/#section=data-r7&hw=i7&test=db

Każde porównanie mvc znajduje się w dolnym-środkowym / dolnym-górnym rankingu listy, podczas gdy zoptymalizowane użycie formularzy internetowych znajduje się w górnym-środkowym/górnym-dolnym rankingi.

Anegdotyczna, ale bardzo poważna Walidacja tych metryk, www.microsoft.com jest obsługiwany przez webforms, a nie MVC. Czy ktoś tu wierzy, że nie wybrałby MVC, gdyby było empirycznie szybsze?

 4
Author: Chris Marisic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-27 21:17:13

Naprawdę nie ma jak na to odpowiedzieć. MVC domyślnie używa silnika widoku formularzy internetowych i może być skonfigurowany do używania dowolnej liczby niestandardowych silników widoku, więc jeśli chcesz porównać wydajność, musisz być bardziej szczegółowy.

 2
Author: Gerald,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-21 14:02:36

Zacząłem pracę w MVC około rok temu, byłem zainspirowany, ale nie pod wrażeniem.

Nienawidzę stanu widzenia i postrzegam go jako źródło wszelkiego zła w kategoriach ASP.NET dlatego po prostu go nie używam i szczerze mówiąc, dlaczego Ty miałbyś to zrobić?

Wziąłem w zasadzie ASP.NET koncepcja MVC Framework i zbudowałem to na swój własny sposób. Ale zmieniłem kilka rzeczy. Zbudowałem kod kontrolera lub kod routingu URL wokół dynamicznej rekompilacji.

Teraz posunąłbym się tak daleko jak powiedzieć, że ASP.NET aplikacje MVC będą szybsze w zależności od tego, jak z nich korzystasz. Jeśli całkowicie porzucisz WebForms, będziesz szybszy, ponieważ ASP.NET cykl życia i model obiektu jest ogromny.

Pisząc tworzysz armię... nie czekaj, legion obiektów, które będą uczestniczyć w renderowaniu widoku. To będzie wolniejsze niż Jeśli gdzie wyrazić minimalną ilość zachowania w samej stronie ASPX. (Nie obchodzi mnie abstrakcja view engine ponieważ wsparcie dla stron ASPX w Visual Studio jest przyzwoite, ale całkowicie porzuciłem WebForms jako koncepcję i w zasadzie wszelkie ASP.NET framework ze względu na nadęty kod lub brak możliwości zmiany rzeczy, które łączą moją aplikację).

Znalazłem sposoby polegania na dynamicznej rekompilacji (System.Odbicie.Emit) do emitowania obiektów specjalnego przeznaczenia i kodu w razie potrzeby. Wykonanie tego kodu jest szybsze niż reflection, ale początkowo zbudowane za pomocą usługi reflection. To ma biorąc pod uwagę mój Framework o Smaku MVC świetna wydajność, ale także bardzo statycznie wpisany. Nie używam łańcuchów i kolekcji par nazwa / wartość. Zamiast tego moje niestandardowe usługi kompilatora przechodzą w przepisuje post formularza do akcji kontrolera przekazywanej przez typ odniesienia. Za sceną dzieje się wiele rzeczy, ale ten kod jest szybki, dużo szybszy niż WebForms czy Framework MVC.

Poza tym, nie piszę adresów URL, piszę wyrażenia lambda, które tłumaczone są na adresy URL, które później mówią, które wywołanie akcji kontrolera. Nie jest to szczególnie szybkie, ale bije na głowę posiadanie zepsutych adresów URL. To tak, jakbyś miał statycznie wpisane zasoby, a także statycznie wpisane obiekty. Statycznie wpisana aplikacja internetowa? Tego właśnie chcę!

Zachęcam więcej osób do wypróbowania tego.

 2
Author: John Leidegren,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-02-11 09:42:58

Projekty stworzone w visual studio. Jednym z nich jest szablon mvc4, innym jest WebForm (tranditional). I kiedy wykonujemy test obciążenia z WCAT, jest to wynik,

MVC4 jest dość powolny niż WebForms, jakieś pomysły?

Tutaj wpisz opis obrazka

MVC4

  • może dostać około 11 rps
  • Rps jest dość niski zarówno 2-procesorowy, jak i 4-procesorowy Serwer

Tutaj wpisz opis obrazka

WebForms (aspx)

  • Może przekroczyć 2500 rps

  • Performance killer ma stwierdzono, że jest to błąd MVC Bata lub RC. A wydajność zostanie poprawiona po usunięciu wiązek rzeczy. Teraz najnowsza wersja naprawiła to.

 2
Author: jihe.wei,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-18 10:01:03

Wydajność zależy od tego, co robisz... Zazwyczaj MVC jest szybszy niż asp.net głównie dlatego, że ViewState jest nieobecny i ponieważ MVC działa bardziej z Callback niż Postback domyślnie.

Jeśli zoptymalizujesz stronę formularza internetowego, możesz mieć taką samą wydajność jak MVC, ale będzie to dużo pracy.

Ponadto, ich jest wiele nugets dla MVC (a także dla Webform), aby pomóc w poprawie wydajności witryny jak połączyć i minify css i javascripts, grupować obrazy i używać je jako sprite, i tak dalej.

Wydajność witryny w dużym stopniu zależy od Twojej architektury. Czysty z dobrym rozdzieleniem troski przyniesie Ci bardziej czysty kod i lepszy pomysł, jak poprawić wydajność.

Możesz spojrzeć na ten szablon " NEOS-SDI MVC Template ", który stworzy dla Ciebie czystą architekturę z wieloma ulepszeniami wydajności domyślnie(sprawdź stronę internetową MvcTemplate ).

 1
Author: Jeff Lequeux,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-14 16:38:18

Tutaj wpisz opis obrazka

Zrobiłem mały test obciążenia VSTS eksperyment z jakimś podstawowym kodem i znalazłem ASP.NET czas reakcji MVC będzie dwa razy szybszy w porównaniu z ASP.NET Webforms. Powyżej znajduje się załączony Wykres z wykresem.

Możesz przeczytać ten eksperyment testu obciążenia w szczegółach z tego artykułu CPhttps://www.codeproject.com/Articles/864950/ASP-NET-MVC-vs-ASP-NET-WebForm-performance-compari

Test został przeprowadzony zgodnie z poniższymi specyfikacjami przy użyciu VSTS i Telerik load test oprogramowanie: -

User load 25 users.

Czas trwania testu wynosił 10 minut.

Konfiguracja komputera DELL 8 GB Ram, Core i3

Projekt był hostowany w IIS 8.

Projekt został stworzony przy użyciu MVC 5.

Założono połączenie sieciowe LAN. Ten test na razie nie uwzględnia opóźnień w sieci.

Przeglądarka W teście wybrała Chrome i Internet explorer.

Wielokrotne odczyty, które wykonano podczas testu, aby uśrednić nieznane zdarzenia. 7 czytań, gdzie wzięte i wszystkie odczyty są publikowane w tym artykule jako czytanie 1, 2 i tak dalej.

 -1
Author: Shivprasad Koirala,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-18 10:01:55