Speed ​​of kode: ASP.NET-MVC versus PHP

stemmer
67

Jeg har en vennlig argument skjer med en kollega om dette, og min personlige mening er at en ASP.NET-MVC kompilert webapplikasjon ville kjøre mer effektivt / raskere enn samme prosjekt som vil bli skrevet i PHP. Min venn er uenig.

Dessverre har jeg ikke har noen fast data som jeg kan bruke til å sikkerhetskopiere mitt argument. (Det gjør heller ikke han)

Til dette, jeg prøvde å Google for svar for å prøve og finne bevis for å bevise ham feil, men mesteparten av tiden debatten omgjort til hvilken plattform det er bedre å utvikle seg på, kostnader, sikkerhetsfunksjoner, osv ... For å få til dette argumentet jeg egentlig ikke bryr seg om noe av det.

Jeg vil gjerne vite hva stable overløp samfunnet tenker om rå fart / effektivitet av nettsteder generelt som er utviklet i ASP.NET med MVC versus nøyaktig samme nettsted utviklet med PHP?

Har noen noen praktiske eksempler i virkelige scenarier som sammenligner resultatene av de to teknologiene?

(Jeg skjønner for noen av dere dette kan meget vel være en irrelevant og kanskje dumt argument, men det er et argument, og jeg vil likevel gjerne høre svarene på de fine menneskene her på SO)

Publisert på 28/03/2009 klokken 01:04
kilden bruker
På andre språk...                            


11 svar

stemmer
65

Det er en vanskelig sammenligning å gjøre fordi forskjeller i de respektive stabler betyr at du ender opp med å gjøre det samme på en annen måte, og hvis du gjør dem det samme for sammenligningsformål er det ikke et veldig realistisk test.

PHP, som jeg liker, er i sin mest grunnleggende form lastet med hver forespørsel, tolket og deretter kastes. Det er veldig mye som CGI i denne sammenheng (som er ingen overraskelse vurderer det er omtrent 15 år gammel).

Nå gjennom årene ulike optimaliseringer har blitt gjort for å forbedre ytelsen, spesielt opcode caching med APC, for eksempel (så mye at APC vil bli en standard del av PHP 6 og ikke en valgfri modul som det er nå).

Men fortsatt PHP-skript er i utgangspunktet forbigående. Session informasjon er (normalt) fil basert og gjensidig utelukkende (session_start () blokker andre scripts tilgang til den samme brukersesjon til session_commit () eller manuset er ferdig), mens det er ikke tilfelle i ASP.NET. Bortsett fra sesjonsdata, er det ganske enkelt (og normal) for å ha objekter som bor i programmet sammenheng i ASP.NET (eller Java for den saks skyld, som ASP.NET er mye mer lik).

Dette er en viktig forskjell. For eksempel, databasetilgang i PHP (med mysql, mysqli, PUD, etc) er forbigående (vedvarende tilkoblinger til tross), mens .Net / Java vil nesten alltid bruke vedvarende tilkoblings bassenger og bygge på toppen av dette for å skape ORM rammer og lignende, cacher for som er utenfor noen spesiell forespørsel.

Som en Bytecode tolket plattform, er ASP.NET teoretisk raskere, men grensene for hva PHP kan gjøre er så høyt som å være irrelevant for folk flest. 4 av de 20 besøkte nettstedene på internett er PHP for eksempel. Hastigheten på utviklingen, robusthet, kostnaden for å kjøre miljøet, osv ... har en tendens til å være langt mer viktig når du begynner å skalere enn noen teoretisk hastighet forskjell.

Husk at Net har primitive typer, skriver sikkerhet og disse slags ting som vil gjøre kode raskere enn PHP kan kjøre den. Hvis du ønsker å gjøre en litt urettferdig test, sortere en rekke én million tilfeldige 64 bits heltall i begge plattformer. ASP.NET vil drepe det fordi de er primitive typer og enkle matriser vil være mer effektivt enn PHP sin assosiative arrays (og alle arrays i PHP er assosiative slutt). Pluss PHP på en 32 bit OS vil ikke ha en innebygd 64 bits heltall så vil lide enormt for det.

Det bør også påpekes at ASP.NET er pre-kompilert mens PHP er tolket on-the-fly (unntatt opcode caching), noe som kan gjøre en forskjell, men fleksibiliteten i PHP i denne forbindelse er en god ting. Å kunne distribuere et script uten spretter serveren din er stor. Bare slippe den inn og det fungerer. Strålende. Men det er mindre performant slutt.

Til syvende og sist selv om jeg tror du krangler hva er egentlig et irrelevant detalj.

Svarte 28/03/2009 kl. 01:18
kilden bruker

stemmer
20

I min (non-hardbenchmarked) opplevelse Asp.Net kan sikkert konkurrere (og i noen områder overgå) PHP i form av rå fart. Men lignende med mange andre språk valg relaterte spørsmål følgende uttalelse er (i dette tilfellet) gyldig (etter min mening):

  • Det er langsom, buggy steder i språket x (det være seg PHP eller Asp.Net)
  • Det er store, raske områder i språket x (det være seg PHP eller Asp.Net)

Det jeg prøver å si: de (talenter av) utbygger vil påvirke den generelle hastigheten mer enn et valg mellom to (omtrent tilsvarende i noen abstraherte grad) teknologier.

Virkelig, ikke en 'generell hastighet' sammenligning ikke gjøre mye fornuftig som både kan ta opp til hverandre på en eller annen måte med mindre du er i en svært spesiell spesialist nisje (som du ikke har informert oss om).

Svarte 28/03/2009 kl. 01:39
kilden bruker

stemmer
1

Jeg ville pleier å være enig med deg (som ASP.NET MVC er raskere), men hvorfor ikke lage en vennlig veddemål med din venn og dele resultatene? Lag en veldig enkel dynamisk side, stammer fra en MySQL database, og laste siden mange ganger.

For eksempel lage et bord med rekker 1.000.000 inneholdende en sekvensiell primærnøkkel, og deretter en tilfeldig # i den andre kolonnen. Hvert av nettstedene kan akseptere primærnøkkelen i en GET, hente tilfeldig # basert på vedtatt i nøkkelen, og vise tilfeldige # i noen form for dynamisk generert html.

Jeg vil gjerne vite resultatene ... og hvis du har en blogg eller lignende, resten av verden vil også (får dette spørsmålet hele tiden).

Det ville være enda bedre hvis du kunne bygge denne enkle lille app i vanlig ASP også. Pokker, jeg vil selv betale deg for disse resultatene hvis testen var godt utformet. Seriøst - bare uttrykke din interesse her og jeg sender deg min e-post.

Svarte 28/03/2009 kl. 01:56
kilden bruker

stemmer
3

Vanligvis ASP.Net vil gi bedre resultater på en gitt hardware enn PHP. ASP.Net MVC kan gjøre enda bedre (kan være det operative ordet her). Mesteparten av plattformen er designet med bedriftsutvikling i tankene. Testbar kode, separering av bekymringer etc. Mye av trommesyke i ASP.Net kommer fra objektet stabelen innenfor siden (nestede kontroller). Pre-kompilering gjør dette bedre performant, men det kan være et sentralt tema. MVC en tendens til å tillate mindre nesting, ved hjelp av webforms basert vis motor (andre er tilgjengelige).

Hvor de største forsinkelser i webapplikasjoner tilfeldigvis har en tendens til å være eksterne tjenester, spesielt database utholdenhet. PHP er programmert uten fordelen av tilkoblingsgrupper, eller i-minne øktstatus. Dette kan overvinnes med memcached og andre, mer performant tjenestelagene (også tilgjengelig for å Net).

Det kommer egentlig ned til detaljene i et område / søknad. dette nettstedet skjer å kjøre MVC på relativt beskjedne maskinvare ganske godt. Et lignende område under PHP vil trolig falle under sin egen vekt. Andre ting å vurdere. IIS vs Apache vs LightHTTPD etc. Ærlig php vs asp.net er mye mer enn rå ytelse forskjeller. PHP doesnt egner seg godt til store, komplekse programmer på langt nær så mye som asp.net MVC, det er så enkelt ... Dette i seg selv har mer å gjøre med VS + SCC enn noe annet.

Svarte 28/03/2009 kl. 02:38
kilden bruker

stemmer
5

Uten noen optimaliseringer, ville en .net kompilert app selvfølgelig kjøre "raskere" enn php. Men du er riktig at det er en dum og irrelevant argument fordi det har ingen betydning for den virkelige verden utenfor skryte.

Svarte 30/08/2009 kl. 07:44
kilden bruker

stemmer
1

Trenger å merke seg at spørsmålet er .NET MVC vs PHP, ikke NET (Web Forms) vs PHP. Jeg har ikke fakta, men generelle følelsen er PHP nettsteder kjøre fortere enn .NET Web skjemasider (og jeg .NET bare). NET webskjemaer tross for å være kompilert vs tolket PHP er vanligvis langsom fordi alle del av koden som er generert automatisk av .NET motoren for å gjengi HTML for hver <asp: kontroll> du bruker på utformingsmodus. Å få en .NET webskjema for å konkurrere i hastighet med PHP er et komplett odisea som starter med å sette EnableViewState = false, og kan ende på å bruke hver html kontroll med runat = server ... gal uh?

Nå MVC er en annen historie, jeg hadde gjort to nettsteder bruker .NET MVC2 og følelsen er god, kan du føle hastigheten nå! og koden er som ren som et PHP nettside. Så nå lar MVC du skrive ren kode som PHP gjør, og MVC er kompilert mot PHP tolkes, kan det bare føre til en ting, MVC raskere enn PHP ... tiden vil vise seg, går når den generelle følelsen er "MVC nettsteder raskere enn PHP", så vil vi være rett om hva jeg sier her i dag.

ser deg/!

Svarte 10/10/2010 kl. 13:24
kilden bruker

stemmer
11

Jeg vil si ASP.net

Ting å vurdere:

  • ASP.net er pre-kompilert
  • ASP.net er vanligvis skrevet i C #, som skal kjøre raskere enn PHP

Riktignok er forskjellene svært små. Det er fordeler med begge, tror jeg PHP er mye enklere å distribuere og kan kjøres på en server ikke bare IIS. Jeg er ganske glad i ASP.net MVC skjønt.

Svarte 05/03/2012 kl. 19:16
kilden bruker

stemmer
27

ASP.NET kjører raskere. ASP.NET Development er raskere. Kjøp rask datamaskin, og nyte det hvis du gjør alvorlige virksomhet webapplikasjoner

ASP.NET-kode utfører mye raskere enn PHP, når det er bygget i versjon modus, optimalisert, bufret etc etc. Men, (som Facebook, unntatt store aktørene), er det for nettsteder mindre viktig - mest tid på sidegjengivelse tid er få tilgang til og å spørre databasen.

I å koble database ASP.NET er mye bedre - i asp.net vi vanligvis bruker LINQ som oversetter våre objektspørringer i lagrede prosedyrer i SQL server database. Også tilkobling til databasen er vedvarende, en for en nettside, er det ikke behov for å gjenoppta kontakten.

PHP, i sammenligning, ikke kan holde sql server sammenheng mellom forespørsel, det koble til, grip data fra db og ødelegger, når du kobler til databasen er ofte 20-30% av sidegjengivelse tid.

Også hele web-applikasjon config er lastet inn i php på hver forespørsel, hvor i asp.net vedvare i minnet. Det kan lett sees i store, bedrifts rammeverk som symfony / symfony2, mye rendering tid er symfony intern processess, hvor ASP.NET laster det en gang og ikke kaste bort din server for unyttig arbeid.

ASP.NET kan holder objektet i cache i søknaden minne - i php du må skrive det til filer, eller bruk hacke som memcache. bruke memcache er mye å jobbe med samtidighet og fare problemer (lagring cache i filene har også sine egne problemer med samtidighet - hver forespørsel starte ny tråd av apache server og mange forespørsel kan arbeide på en gang - du må tenke på samtidighet mellom de tråder, det tar mye utviklingstid og ikke alltid fungerer fordi php ikke har noen Mutex mekanismer i språket, så du kan ikke gjøre kritiske delen av noen måte).

nå noe om utviklingen hastighet: ASP.NET har to hoved rammeverk utformet for det (Webforms og MVC), installert med miljø, hvor i PHP du må få en åpen kildekode-rammeverk. Det er ingen standard rammeverk i php som i asp.NET.

ASP.NET språk er så rik, standard bibliotek har løsninger for veldig mye felles problemer, hvor PHP standard bibliotek er ... naken ... de kan ikke holde en navnekonvensjon.

NET har typer, der PHP er dynamisk, så det betyr ingen kontroll om kildekoden før du kjører den, eller skrive enhet tester.

NET har stor IDE der PHP IDE-er gjennomsnittlig eller middels gode (PHPStorm er fortsatt mye verre enn VS + resharper eller uten det)

PHP stillas i symfony er avfyrt fra kommandolinjen når ASP.NET stillas er integrert i miljøet.

Hvis du har treg datamaskin som min (en kjerne 2,2ghz), kan utvikle ASP.NET-sider være painfull fordi du har å rekompilere prosjektet på noen endring av kildekoden, der PHP-koden oppdatere umiddelbart.

PHP språk syntaks er så uferdig, unsolid og naken i forhold til C # syntaks. Sterke typer i C # og mange fleksible språkfunksjoner kan få fart på utviklingen og gjøre koden mindre buggy.

Svarte 05/06/2012 kl. 23:27
kilden bruker

stemmer
13

Jeg har gjort ytelsestest.

Program: Summen av 10.000.000 tall

skriv bildebeskrivelse her

skriv bildebeskrivelse her

Gitt produksjonen beviser at php er tregere enn C # ............

Svarte 27/03/2014 kl. 12:04
kilden bruker

stemmer
-2

C ++ ... Akkurat nå kampen vil være mellom PHP og ASP.NET. PHP vil vinne på brukervennlighet, vil ASP.NET vinner på ytelse (i en windows server økosystem). Mange av de større nettstedene som startet med php har oppgradert til C ++.

Svarte 25/01/2015 kl. 05:00
kilden bruker

stemmer
-3

Jeg er en utvikler ekspert på begge teknologier (ASP.Net C # og PHP5). Etter mange års arbeid og sammenligne dem i det virkelige produksjonsmiljøer disse er mine inntrykk:

  • Først av alt, du kan ikke sammenligne dem gjør en sløyfe for å legge verdier 1.000.000, dette er ikke en reell sak.

  • Er ikke det samme å sammenligne dem i min utviklingsmiljø enn en reell produksjon env. F.eks: I utvikling ASP.Net bruker ikke IIS som standard, kan du bruke en indre utvikling server som har ulike optimaliseringer. I dev, er det ingen samtidighet.

Så min mening er den neste:

  • Looping 1.000.000 ganger c # kommer til å bli raskere. (Ingen-forstand)

  • Serverer en ekte side, at tilgang DB, viser bilder, har skjemaer osv .... ASP.Net er tregere enn PHP.

  • Vekt av ASPX sider er x10 tyngre enn PHP, så dette gjør sluttbrukeren til å vente mer tid til å få siden.

  • ASPX er tregere å utvikle enn PHP, dette er viktig fordi på slutten er penger. Vi utvikler en 35% raskere i PHP enn ASP.Net, på grunn av å måtte kompilere og start hver gang u ønsker å sjekke smthg.

  • I store prosjekter, ASP.Net på lang sikt er bedre for å unngå feil og har en kompleks arkitektur.

  • På grunn av Windows-servere, IIS, .... på slutten u trenger en kraftig server for å holde samme mengde brukere på ASP enn PHP. F.eks: Vi serverer med ASP.net arround 20.000 samtidige brukere, og i PHP, kan den samme serveren får arround 30.000 brukere.

Det eneste viktige er ikke om looping hvilken som er raskere. Saken er når nettsiden er ekte og er i produksjon, hvor mange brukere de kan holde, hvor tung er den siden (tyngre == mer ventetid fra brukerne, mer netto kostnad på server, mer disk ansvar for server, mer minne ansvaret for server). Prøv å sjekke ganger med samtidighet og u vil se.

Håper det hjelper.

Svarte 28/01/2015 kl. 09:25
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more