Basit Bir Facebook HipHop Performans Soru

6 Cevap php

Böyle CodeIgniter gibi bir PHP web çerçevesini kullanarak bir merhaba dünya app yazmak ve sonra onu derlemek ve HipHop kullanarak çalıştırın. Django veya raylar aynı merhaba dünya app yazarsanız daha hızlı çalışır?

6 Cevap

HIPHOP çalıştırmak için derlenmiş gereken C + + kod içine php kodu dönüştürür. Önceden derlenmiş kod daha hızlı çalışır ve daha sonra python / php gibi dilleri scriping az bellek kullanır beri muhtemelen daha hızlı verdik örnekte çalışacaktır.

Ancak, HIPHOP tüm kod dönüştürmek değildir. Php kod bir çok dinamik olduğunu ve c + + için, bu aklınızda bu ile kod yazmak zorunda kalacak demektir değiştirilemez. CodeIgniter bile kullanarak derlenmiş olabilir eğer HIPHOP başka bir soru.

Terry Chay ne zaman kullanılacağını kapsayan hiphop hakkında büyük bir makale, bu sınırlamalar ve geleceği yazdı. Ben, bu okuma salık gibi o olacak büyük olasılıkla cevabı soruların çoğu ve size nasıl çalıştığını içine biraz fikir verebilir :)

http://terrychay.com/article/hiphop-for-faster-php.shtml

Bu noktada çalışma süresi önemsiz olduğunu. HipHop istekleri ... anlam milyarlarca ölçekleme için tasarlanmıştır. Hatta orta boy bir web sitesi için HipHop gibi bir şey kullanmak kesinlikle gerek yoktur.

Ama daha Sorunuzun noktasına ... Ben bizi görmek için kullanılabilir karşılaştırma çizelgeleri olmuştur sanmıyorum, ama çalışma süresi düzeyinde daha hızlı olacağını sanmıyorum.

Django veya raylar hakkında bilmiyorum, bu nedenle bu konu dışı bir parçasıdır.

  • Düz php, istek mod_php sonra, apache gider. mod_php, diskten helloworld.php komut yükler ayrıştırır & bunu tokenizes baytkoduna derler, sonra bytecode yorumlar, geri apache çıktı geçer, apache kullanıcıya hizmet vermektedir.

  • php ve bir iyimserlik ile ilk çalıştırma düz php ile yaklaşık olarak aynıdır, ama derlenmiş kaynak kodu ram saklanır. sonra, ikinci isteği için: apache gider, mod_php için apache, ram den apc yükler bytekod, kullanıcıya geri, geri apache geçirir, onu yorumlar.

  • hiphop ile hiçbir apache, ama kendini hiphop ve hiçbir tercüman var, yani isteği geri kullanıcıya hiphop ve doğrudan gider. Yani evet, çeşitli nedenlerden dolayı, daha hızlı:

    • gerekli hiçbir baytkodu derleme var, çünkü hızlı başlangıç ​​- Program makine tarafından okunabilir kod zaten. böylece istek başına derleme ve hiçbir kaynak dosya okuma yok.
    • hiçbir tercüman. makine kodu mutlaka hızlı değil - kaynak çeviri (hiphop) kalitesi ve statik derleyici (g + +) kalitesine bağlıdır. Çünkü tip kullanım ve bu tür yükü biraz var çünkü hiphop tercüme kodu hızlı, elle yazılmış c koduna göre değildir.
  • node.js ile, hiçbir apache de var. komut başladı ve (V8 derleyici yapar çünkü) doğrudan makine koduna derlenmiş, bu yüzden (vaktinden) derleme (veya hala JIT denir? ben gerçekten bilmiyorum) AOT naziksiniz edilir. her istek sonra doğrudan zaten derlenmiş makine koduna tarafından işlenir; böylece node.js aslında hiphop çok karşılaştırılabilir. düğüm evented IO yapar iken i okuyuculu edilecek hiphop veya böyle bir şey varsayalım.

facebook gerçekten çok değil bir 50% hız kazancı, iddia; Eğer dil çatışmada sonuçlarını karşılaştırmak, sen, çeşitli algoritmaların yürütme hızı için görürsünüz php is 5 to 250 times slower.

o halde neden sadece% 50? Çünkü ...

  • web uygulamaları, sadece yürütme hızı, örneğin çok daha fazla bağlıdır IO
  • php tip sistem c + + 'ın statik türlerinin en iyi şekilde yapmak için hiphop önler
  • işlevlerinin çoğu, ya içinde yerleşik veya uzantıları geliyor çünkü uygulamada, php bir sürü, zaten C. uzantıları C programlanmış ve statik olarak derlenmektedir.

Merhaba dünya, hatta iyi bir çerçeve ile, çok küçük yürütme hızı diğer tüm yükü (ağ göre önemsiz olabilir hala çünkü ben, merhaba dünya için huge performans artışı olsaydı emin değilim gecikme ve malzeme).

imo: Eğer hız kullanım and kolaylığı istiyorsanız, node.js gitmek için :)

Basit bir uygulama çalıştıran her dilde her zaman hızlıdır. O facebook gibi karmaşık hale geldi, o zaman sorunlar çok karşı karşıya gelecek. PHP yavaşlık bu yüzünü gösterecektir olacaktır. Tüm mantık ve kod diğer dilin sözdizimi tercüme etmek çok kolay değil çünkü aynı zamanlarda, başka bir dile varolan kodu dönüştürme, bir seçenek değildir. Facebook geliştirici eski kod tutmaya karar ve hızlı PHP yapmak yüzden. Yani HipHop denilen kendi PHP derleyicisi oluşturmak nedeni budur.

this story perspektif Facebook geliştirici bir okuma, bu yüzden HipHop tarihini biliyorum.

Bu gerçekten elma karşılaştırmak için bir elma değildir. En seviyeli oyun alanında gibi bir şey olabilir:

  • Django apache arkasında çalışıyor
  • Django merhaba dünya demek için bir HTML şablonu render (hayır önbelleğe alma)

VE

  • HPHP apache arkasında çalışıyor
  • HPHP merhaba dünya demek için bir HTML şablonu rendring (yine, hayır önbelleğe alma)

Hiçbir veritabanı neredeyse hiçbir dosya I / O ve hiçbir önbelleğe alma vardır. Eğer değişen eşzamanlılık düzeyde bir yük jeneratör ile sayfa 10.000 kez vurursanız muhtemelen HPHP Django veya raylar daha iyi performans göreceksiniz - o saniyede daha sayfaları işlemek hizmet ve trafik biraz daha iyi ayak uydurabilecek söylemektir.

Soru: Hiç bu kadar çok eşzamanlı kullanıcıya sahip olacak mı? Eğer sen, büyük olasılıkla bir veritabanı veya önbelleğe alınmış bir sayfa isabet olacak?

HPHP serin sesler, ama IMHO (siz bunu kontrol etmek mantıklı olabilir ki bu durumda trafik sürü alıyorsanız sürece) henüz gemi atlamak için hiçbir neden yoktur.

Will it run faster than if I write the same hello world app in django or rails?

Muhtemelen, ama üzülmek yok olacaktır. Biz henüz yayınlanmamış projelerin muhtemel hızlı gelişmeler söz ediyorsanız, Pythonistas var pypy-jit ve unladen-swallow ;) için sabırsızlanıyoruz