2010-02-02 62 views
6

在PHP世界今天的新聞是Facebook's HipHop,其中:Facebook的HipHop - 它是幹什麼用的?

的HipHop for PHP是不是技術上一個編譯器本身。而是它是一個源代碼轉換器。 HipHop以編程方式將您的PHP源代碼轉換爲高度優化的C++,然後使用g ++編譯它。 HipHop以語義等價的方式執行源代碼並犧牲一些很少使用的功能 - 例如eval() - 以換取更好的性能。 HipHop包含一個代碼轉換器,PHP運行時系統的重新實現,以及許多常見PHP擴展的重寫,以利用這些性能優化。

我的問題是,這是什麼類型的Web應用程序,這實際上是有用的?

好像典型的數據庫綁定Web應用程序可能不會受到很大的這個服務,但罕見的CPU綁定的應用程序會。

+0

相關(但不是dupe):http://stackoverflow.com/questions/2055875/hiphop-php-was-hyper-php-by-facebook – Pops 2010-02-02 20:31:12

+0

我一直在閱讀關於這一週的傳言,我很高興它終於出來了!我在社交網絡上工作,性能始終是這些類型站點最大的問題 – JasonDavis 2010-02-02 22:50:09

+0

這是一個編譯器,不是?它將PHP編譯爲C++。 – 2010-02-05 16:26:57

回答

7

執行大量處理和/或使用大量內存的Web應用程序。顯然這個HipHop可以將CPU使用率降低大約50%,並且還可以減少內存使用量(我沒有看到在任何地方提及的內存使用量會減少多少)。這意味着您應該能夠使用更少的服務器提供相同數量的請求。

一個額外的好處可能是會有一些基本的類型檢查,以確保代碼是一致的是編譯之前。這應該有助於找到PHP當前由於其弱類型系統而容易忽略的錯誤類型。

缺點似乎是,它可能不支持PHP一些更具活力的功能,如eval(雖然可以說這是一個積極的太)。

+2

我不知道它會如何處理'new $ class'。 – 2010-02-03 02:58:25

+0

喬希,我不知道同樣的事情。 – Jayrox 2010-02-03 04:46:22

2

在解釋代碼上運行機器代碼更快。這在某種意義上是有用的,但也減少了您需要的機器數量,因爲每個處理器的工作量較少。

這是很好的公司,如Facebook,因爲它們可以減少機器所需要的量。
就他們爲什麼對他們有用而言,他們可能會對他們擁有的大量數據進行大量排序和索引。

4

那麼它「轉換」成PHP C++,以幫助在很大程度上可擴展的網站的性能。

因此,HipHop適用於當你有一個網站時,你開始在哈佛,你很快成長爲一家價值數十億美元的公司,而且人們正在製作一部關於賈斯汀汀布萊克主演的電影。當你有這樣一個網站並且想要節省CPU週期,但不想重寫你的代碼庫時,你可以使用HipHop。

如果你是剛剛起步的,除非你被困在一個荒島上,只有PHP程序員是拒絕學習更具擴展性的語言,你不使用的HipHop。

+0

說PHP不擴展有點不公平。雖然這個項目不利於刻板印象! – alex 2010-02-06 03:30:18

+0

TBH我甚至不知道它是否縮放 - Digg使用它,所以它必須很好地擴展,呃?我只是想看看Facebook所做的任何發現。 – bpapa 2010-02-06 05:26:14

+2

Facebook確實存在被訪問量排名第二的網站的問題! – alex 2010-02-08 04:11:10

0

你可以認爲它是某種編譯器,需要大量的.php文件,並生成一堆C++文件,然後用g ++編譯(不確定是否支持其他編譯器)。由此產生的EXE是你的Web應用程序,包括一個Web服務器。這意味着你可以運行該exe文件,並且你很好。網絡服務器基於libevent,據推測相當有效。

0

除了Facebook和其他龐大的PHP網站之外,嘻哈對每個人都是毫無意義的。我相信很多人會因爲「速度很快」而跳上潮流,但有多少基於PHP的應用程序使用整個服務器場? 僅僅因爲你在一個社交網站上工作,並不意味着你應該考慮使用HH。