Ne Java ya da C # çok PHP yavaş yapar?

9 Cevap php

Bu hep merak ettiğim bir şey: bu dillerin her 3 bayt aşağı derlenmiş ve daha sonra oradan idam alırsanız Neden PHP, Java ya da C # daha yavaştır? Ben normalde PHP her isteği ile her dosyayı yeniden derler biliyorum, ama resmin içine APC (Bir bytekod önbellek) getirmek bile, performans (APC büyük ölçüde iyileştirir rağmen) hiçbir Java ya da C # yaklaşamaz.

Edit: I'm not even talking about these languages on the web level. I am talking about the comparison of them when they're number crunching. Not even including startup time or anything like that.

Ayrıca, ben burada cevabına dayanarak karar çeşit yapmıyorum. PHP seçim benim dilidir; Ben onun tasarımı hakkında sadece merak ediyordum.

9 Cevap

Bir nedeni diğerleri de söylediğim gibi, PHP bir JIT derleyicisi eksikliğidir.

Başka büyük nedeni PHP'nin olan dynamic typing. Bir dinamik yazdığınız dil her zaman değişken tipleri çalışma zamanında yerine derleme zamanında kontrol edilir, çünkü bir statik olarak yazılan bir dil daha yavaş olacak. Sonuç olarak, C # ve Java gibi statik olarak yazılan diller çalışma zamanında daha hızlı olabilir, ancak PHP gibi dinamik yazdığınız dili daha derlemek için çok uzun almaya gidiyoruz. Bir JIT derleyicisi dinamik yazılan diller için bir sorun, bu daha az yapar, ama ne yazık ki, PHP bir tane yok.

Sadece dili daha buna biraz daha var web uygulamaları oluşturmak için tüm bu dilleri kullanarak varsayarak - Ben elma ve portakal burada karşılaştırarak içine biraz tahmin ediyorum. Seni yavaşlıyor veritabanı zaman (Ve çok ;-)

Ben bir speed argüman temelinde diğer üzerinde bu dillerden birini seçerek önermek asla.

Java ve C # Her iki bayt kodunu almak ve gerçek makina koduna derlemek, hangi JIT compilers var. Bunu derleme eylemi, zaman alabilir dolayısıyla C # ve Java yavaş başlangıç ​​saatleri muzdarip olabilir, ancak kod derlenmiş JIT bir kez, performansı C gibi herhangi bir "gerçek derlenen" dil + + gibi aynı ballpark olabilir.

Büyük tek nedeni Java HotSpot JVM ve C # 'ın CLR hem Just-In-Time (JIT) derleme kullanmaktır. JIT derleme işlemci üzerinde doğrudan çalışan yerel kod aşağı baytkodlarına derler.

Ayrıca ben Java bytecode ve CIL daha kolay ve daha etkili JIT optimizasyonlar sürü neden olabilir PHP'nin dahili bayt daha düşük düzey olduğunu düşünüyorum.

Yeni environnement bir PHP sayfası denir her zaman oluşturulacak sahip olduğu anlamına gelir - bir tahmindi PHP yok iken JAVA, "uygulama" sunucu çeşit bağlıdır olabilir.

(This was especially true when PHP was/is used as a CGI, and not as an Apache module or via FastCGI)


Another idea might be that C# and JAVA compilers can do some heavy optimisations at compile time -- on the other side, as PHP scripts are compiled (at least, if you don't "cheat" with an opcode cache) each time a page is called, the compilation phase has to be real quick ; which means it's not possible to spend much time optimizing.


Still : Each version of PHP generally comes with some amelioration of the performances ; for instance, you can gain between 15% and 25% of CPU, when switching from PHP 5.2 to 5.3.

Örneğin, bu kriterler bir göz atın:


One important thing, also, is that PHP is quite easy to scale : just add a couple of web servers, and voila !

Birçok sunucuya 1'den giderken sık sık karşılaştığımız problem oturumları ile - (very easy) DB olanlar veya memcached saklamak ve sorun çözüldü!


As a sidenote : I would not recommend choosing a technology because there is a couple of percent difference of speed on some benchmark : there are far more important factors, like how well your team know each technology -- or, even, the algorithms you are going to use !

Bir dil önemsiz koşullar altında derlenmiş bir dil ya da bir JIT dili daha hızlı olabilir hiçbir yolu yoktur.

Lütfen test programı size, hız endişe C # veya Java ile sopa "Merhaba Dünyaları" dışarı baskı oluşur sürece.

Eğer ne yapmak istediğinize bağlıdır. Bazı durumlarda, PHP kesinlikle daha hızlıdır. PHP dosyası manipülasyon ve diğer temel şeyler (XML şeyler) (oldukça) iyidir. (Ben kriter değil gerçi) Java veya C # durumlarda daha yavaş olabilir.

Ayrıca, PHP çıktı (HTML ya da her neyse) ayrıca zaman tüketen tarayıcısı, indirilen gerekmektedir.

Ayrıca, Java / C # hızı çok makineye bağlı olarak da (birden fazla olabilir) üzerinde çalışır olduğunu. PHP sadece mevcuttur ve sunucu (indirme süreleri, vb hariç) olduğu gibi her zaman hızlı olduğunu hangi bir sunucu üzerinde çalışırken Java / C #, bilgisayarınızda yavaş olabilir.

Ben genel anlamda karşılaştırılabilir sanmıyorum. Ben size bu üç programlama dilleri ile başarılı olabilir bir görev almak ve o karşılaştırmak gerekir düşünüyorum. Yani bir programlama dili seçerken ne yapmalıyım temelde her zaman; Görevi uygun olanı bulmak. Bu programlama dilini oturana kadar görevi şekli yoktur.

wikipedia, PHP kullanımlar The Zend Engine ile uyumlu olarak, does not have a JIT.

PHP yavaş kılan tek şey, kötü kod yazarken kötü geliştiriciler. Ama herhangi bir geliştirme diline hakkında söylenebilir sanırım.