Kod yürütme hızı: PHP versus ASP.NET MVC

11 Cevap php

Ben bu konuda bir meslektaş ile devam samimi bir tartışma var, ve benim kişisel görüşüm bir ASP.NET MVC derlenmiş web uygulaması PHP ile yazılmış olacaktır aynı proje daha hızlı / daha verimli çalıştırmak olduğunu ifade etti. Arkadaşım aynı fikirde.

Ne yazık ki benim argüman yedeklemek için kullanabileceğiniz herhangi bir katı bir veri yok. (Ne o yapar)

Bunun için, onu yanlış kanıtlamak için kanıt denemek ve bulmak cevaplar için Google'a çalıştı ama çoğu zaman tartışma bu uğruna .. vb, maliyet, güvenlik özelliklerini geliştirmek için daha iyi olduğu bir platform haline argüman ben gerçekten herhangi umurumda değil.

Ben taşma topluluk PHP ile geliştirilmiş tam olarak aynı web sitesinde karşı MVC ile ASP.NET geliştirilen genel web sitelerinin ham hız / verime düşünüyor yığını bilmek istersiniz?

Herkes iki teknoloji performansını karşılaştıran gerçek dünya senaryolarında herhangi bir pratik örnekler var mı?

(I realize for some of you this may very well be an irrelevant and maybe stupid argument, but it is an argument, and I would still like to hear the answers of the fine people here at S.O.)

11 Cevap

Bu, ilgili yığınlarının farklar farklı aynı şeyi yapıyor sona anlamına çünkü yapmak zor bir karşılaştırma bulunuyor ve karşılaştırma amacıyla onlara aynı şeyi eğer çok gerçekçi bir test değil.

Sevdiğim PHP, her isteği ile yüklenen en temel formu olduğunu, yorumlanır ve daha sonra atılır. O (kabaca 15 yaşında olduğunu düşünen hiç sürpriz olduğu) çok bu konuda CGI gibi.

(Şimdi olduğu gibi APC standart bir PHP 6 parçası değil, bir isteğe bağlı modül olacak o kadar ki) şimdi yıldır çeşitli optimizasyon örneğin performans, APC ile en önemlisi opcode önbelleğe alma, geliştirmek için yapılmıştır.

Ama yine PHP betikleri temelde geçicidir. O ASP.NET 'te böyle değil oysa oturum bilgileri (normalde) dosya tabanlı ve birbirini dışlayan (session_start () session_commit kadar aynı kullanıcı oturumunu () veya komut bitirir erişen blokları diğer betikleri) olduğunu. Kenara oturumu verilerden, bu (ASP.NET çok daha benzer olduğunu, bu konuda ya da Java) ASP.NET uygulama kapsamında yaşamak nesneleri oldukça kolay (ve normal) bulunuyor.

Bu önemli bir farktır. Net / Java neredeyse daima kalıcı bağlantı havuzu kullanmak ve ORM çerçeveler ve benzeri oluşturmak için bu üstüne inşa edilecek ise Örneğin, (mysql, mysqli, PDO, vb kullanarak) PHP veritabanı erişimi, (rağmen kalıcı bağlantıları) geçicidir herhangi bir özel isteği dışında olduğu için önbelleğe.

Bir bytekod platformu yorumlandığı gibi, ASP.NET teorik hızlıdır ancak PHP yapabileceklerimizin sınırları çoğu insan için alakasız olacak şekilde yüksektir. Internette iyi 20 ziyaret edilen sitelerin 4 PHP örneğin vardır. Vb geliştirme, sağlamlık, çevreyi çalışan maliyet Hız .. herhangi bir teorik hız farkı daha ölçek başladığınızda çok daha önemli olma eğilimindedirler.

Aklınızda. Net ilkel türleri, tip güvenliği ve daha hızlı kod PHP daha çalıştırabilirsiniz yapacaktır şeyler bu türlü sahip ayı. Eğer biraz haksız testi yapmak istiyorsanız, her iki platformda bir milyon rasgele 64 bit tamsayı dizisini sıralamak. Onlar ilkel türleri olduğundan ASP.NET onu öldürecek ve basit diziler PHP'nin ilişkilendirilebilir dizilerle daha verimli olacaktır (ve PHP tüm diziler sonuçta ilişkilendirilebilir vardır). Artı 32 bit işletim sistemi üzerinde PHP bir yerel 64 bit tamsayı böylece için son derece yaşayacaktır olmaz.

Ayrıca PHP on-the-fly bir fark yaratabilir (opcode önbelleğe alma hariç), yorumlanabilir ama bu konuda PHP esneklik iyi bir şeydir oysa ASP.NET derlenmiş olduğuna işaret edilmelidir. Sunucu sıçrayan olmadan bir script dağıtmak için güçlü olmak harika. Sadece bunu bırakın ve çalışır. Parlak. Ama sonuçta daha az performanslısı.

Ben gerçekten alakasız bir detay ne savunarak düşünüyorum Sonuçta olsa.

ASP.NET runs faster. ASP.NET Development is faster. Buy fast computer, and enjoy it if you do serious business web applications

ASP.NET kod yayın modunda inşaatı bulunuyor PHP ile karşılaştırıldığında çok daha hızlı çalıştırır, optimize, web siteleri için vs vs ama (Facebook gibi büyük oyuncular, hariç), daha az önemli önbelleğe - sayfa render zaman çoğu zaman erişim ve veritabanı sorgulama.

Veritabanını bağlayan ASP.NET çok daha iyi - asp.net biz genellikle SQL server veritabanında saklanan prosedürleri içine nesne sorguları çevirir LINQ kullanın. Ayrıca veritabanına bağlantı kalıcı olduğu, bir web sitesi için bir, yeniden bağlanma için gerek yoktur.

PHP, karşılaştırma, isteği arasında sql server bağlantısı tutamaz, bu db ve yok eder gelen, kapmak verileri bağlamak, veritabanını yeniden bağlanma çoğu zaman sayfa render zaman% 20-30 olduğunu.

Ayrıca tüm web uygulama config asp.net içinde bellekte inat her istek, üzerine php yeniden. Kolayca symfony/symfony2 gibi büyük, kurumsal çerçeveler görülebilir, render süresini bir sürü kez ve bu asp.net yükler yararsız iş için sunucu boşa harcamayın symfony iç prosesler vardır.

ASP.NET uygulama belleğinde önbellek nesneyi tutar olabilir - php bunu dosyalara yazmak, ya da memcache gibi kesmek kullanmak zorunda. memcache kullanarak dosyaları önbelleği depolama (eşzamanlılık ve tehlike sorunları ile çalışan bir sürü de bu eşzamanlılık ile kendi sorunları var var - her istek bir anda üzerinde çalışabilir apache sunucu ve birçok istek yeni bir konu başlatmak - bu arasındaki eşzamanlılık düşünmek zorunda ipler, o) geliştirme çok zaman alır ve her zaman işe php dilde herhangi mutekslere mekanizmaları yok çünkü, bu yüzden herhangi bir şekilde eleştirel bölüm yapamazsınız.

now something about development speed: ASP.NET have two main frameworks designed for it (Webforms and MVC), installed with environment, where in PHP you must get a open-source framework. There is no standard framework in php like in asp.NET.

PHP standart kütüphanenin nerede olduğunu ASP.NET dil standart kütüphane çok ortak sorunlara çözümler vardır, çok zengin, ... çıplak ... onlar bir adlandırma devam edemez.

. NET PHP dinamik türleri vardır, bu yüzden bunu çalıştırmak veya birim testleri yazmak kadar kaynak kodu hakkında hiçbir kontrolü anlamına gelir.

. NET büyük IDE sahip olduğu PHP IDE olan (PhpStorm hala çok VS daha kötü + resharper veya bile olmadan) ortalama veya ortalama-iyi

ASP.NET iskele ortamına entegre edildiğinde symfony PHP iskele komut satırından ateş edilir.

Sen benim (tek çekirdekli 2,2 GHz) gibi yavaş bir bilgisayarınız varsa, kaynak kodunun herhangi bir değişiklik, hemen PHP kodu yenileme projenizi derlemek zorunda, çünkü asp.net sayfaları geliştirmek ağrılı olabilir.

PHP language syntax is so unfinished, unsolid and naked compared to C# syntax. Strong types in C# and many flexible language features can speed up your development and make your code less buggy.

Ham hız açısından benim (non-hardbenchmarked) deneyiminde Asp.Net kesinlikle rekabet edebilir (ve bazı bölgelerde aşmak) PHP. Ama diğer dil seçmeli ilgili bir sürü soru ile benzer aşağıdaki deyim geçerli (bence) (bu durumda) olan:

  • Dil x yavaş, adamcağız siteleri (PHP veya Asp.Net olabilir) vardır
  • Dil x büyük, hızlı siteleri (PHP veya Asp.Net olabilir) vardır

Geliştirici (Yetenekler) iki (bazı soyutlanmış ölçüde eşdeğerdir) teknolojileri arasında bir seçim daha genel hızını etkileyecektir: Söylemeye çalıştığım şey.

Gerçekten, bir 'genel hızı' karşılaştırma (sen bizi haberdar değil) çok özel bir uzman niş sürece hem bir şekilde ya da başka birbirine yakalamak gibi anlamda bir çok yapmaz.

Ben ASP.net söyleyebilirim

Dikkate şeyler:

  • ASP.net derlenmiş olup
  • ASP.net genellikle PHP daha hızlı çalıştırmak gerekir C # ile yazılmış

Verilen, farklılıklar çok önemsizdir. Her ikisinin de avantajları var, ben PHP dağıtmak çok daha kolaydır ve sadece IIS değil, herhangi bir sunucu üzerinde çalıştırabilirsiniz düşünüyorum. Gerçi ASP.net MVC oldukça düşkün değilim.

Genellikle ASP.Net PHP daha belirli bir donanım üzerinde daha iyi performans gösterecektir. ASP.Net MVC hala (burada operatif kelime olmak olabilir) daha iyi yapabilir. Platformun en akılda kurumsal gelişim ile tasarlanmıştır. Sınanabilir kod, vb endişeleri ayrılması ASP.Net içinde kabartmak bir sürü sayfa (iç içe kontroller) içindeki nesne yığını geliyor. Pre-derleme bu daha iyi ölçülebilir yapar, ama önemli bir sorun olabilir. MVC webforms tabanlı görünümü motoru (diğerleri mevcuttur) kullanılarak, daha az yumurtlamak için izin eğilimindedir.

Web uygulamalarında büyük yavaşlamalar ne nerede Uzak hizmetler, özellikle veritabanı sebat olma eğilimindedir. PHP bağlantı havuzu yararı olmadan programlanan veya bellek oturum devlettir. Bu (. Net'e de mevcuttur) memcached ve diğer, daha ölçülebilir hizmet katmanları ile aşılabilir.

Bu gerçekten bir site / uygulama özelliklerini aşağı gelir. Bu site oldukça iyi oldukça mütevazı donanım üzerinde MVC çalıştırmak olur. PHP altında benzer bir site muhtemelen kendi ağırlığı altında düşecek. Düşünecek başka şeyler. Vb LightHTTPD vs vs Apache IIS Dürüst asp.net vs php ham performans farklılıkları çok daha fazladır. PHP asp.net mvc gibi neredeyse çok büyük, karmaşık uygulamalar için iyi bir aday değildir, basit ... Bu kendisinden başka bir şey daha VS + SCC ile yapmak daha vardır bu.

Herhangi optimizasyonlar olmadan, bir. Net derlenmiş app elbette php daha "hızlı" çalışır. Ama bunu palavra hakların ötesinde gerçek dünya üzerinde hiçbir etkiye sahip çünkü aptalca ve ilgisiz argüman olduğunu doğru.

Ben sert kod numaraları ve linux ile iki platformları karşılaştıran pencere kutuları hem yürütülen gerçek testleri ile bir blog üzerinde tökezledi. Ben ASP.net seçeneği ile gitmek söylemeliyim.

http://naspinski.net/post/AspNet-vs-php--speed-comparison.aspx

Ben (ASP.NET MVC hızlı olduğunu) sizinle aynı fikirdeyim, ama neden arkadaşınızla samimi bir bahis yapmak ve sonuçlarını paylaşmak istiyorum? Bir MySQL veritabanı türetilen gerçekten basit bir dinamik sayfa oluşturun ve sayfa birçok kez yükleyin.

Örneğin, sıralı bir birincil anahtarı içeren 1.000.000 satır içeren bir tablo oluşturun ve sonra ikinci sütunda rastgele #. Her sitelerin, bir GET birincil anahtarı kabul anahtarında geçti dayalı rastgele # almak ve dinamik olarak oluşturulan html bazı tip rasgele # görüntüleyebilirsiniz.

Ben sonuçlarını bilmek isterdim ... ve sen bir blog veya benzeri varsa, dünyanın geri kalanı da (bu soru her zaman soruluyor alır) olur.

Çok düzenli ASP bu basit küçük app inşa edebileceğini eğer daha iyi olurdu. Test iyi tasarlanmış ise Heck, ben bile bu sonuçlar için size ödeyecek. Ciddi - sadece burada ilgi ifade ve ben benim e-posta göndereceğiz.

PHP, C # daha yavaştır.

Ben performans testini yaptım.

Program: 10000000 Sayıların Toplamı

enter görüntü açıklaması here

enter görüntü açıklaması here

Verilen çıkış php yavaş olduğunu kanıtlıyor C #

Need to note that question is .NET MVC vs PHP, not .NET (Web Forms) vs PHP. I don't have the facts, but general feeling is PHP websites run faster than .NET Web form sites (and I do .NET only). .NET web forms despite being compiled vs interpreted PHP is generally slow because all the chunk of code that is autogenerated by the .NET engine to render the HTML for each < asp:control > you use on design mode. Getting a .NET web form to compete in speed with PHP is a complete odisea that starts with setting EnableViewState = false, and can end on using every html control with runat=server... crazy uh?

Şimdi, MVC kullanıyorum iki web sitesi yapmış, farklı bir hikaye. NET MVC2 ve duygu iyi, artık hızını hissediyorum! ve kod herhangi bir PHP web sitesi gibi temiz. Yani, şimdi, MVC sadece genel anlamda "MVC web siteleri olduğunda zaman çalışır, ispat edecektir ... hızlı PHP daha, bir şey için MVC yol açabilir, yorumlanır PHP yaptığı gibi temiz kod yazmak sağlar ve MVC PHP karşı derlenmiş PHP daha hızlı "o zaman biz bugün burada söylemek ne doğru olacaktır.

görmek / sen /!

ASP.NET MVC sayfaları php sayfaları daha yük yavaş olduğuna inanıyoruz. Ben neden ufak bir fikrim yok, ama bu benim gözlem olmuştur. Tabii ki, böyle bir veritabanı erişen ve CPU-yoğun görevler olarak bariz tüm ayrıntıları kaldırmak üstleniyor ve sadece bir dinamik olarak oluşturulan html sayfası hizmet görevi odaklanmak.