成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Facebook揭秘HipHop項(xiàng)目 PHP程序大提速

開(kāi)發(fā) 后端 前端
PHP使我們常用的一種腳本語(yǔ)言,其最大的特點(diǎn)就是編程效率高,能夠支持產(chǎn)品的快速迭代,可與其他傳統(tǒng)的編譯語(yǔ)言相比,CPU和內(nèi)存使用效率不高,但Facebook的HipHop項(xiàng)目的完成,預(yù)示著PHP語(yǔ)言將更加優(yōu)化。

編程效率高是PHP語(yǔ)言***的特點(diǎn),但是作為腳本語(yǔ)言,一直存在著CPU和內(nèi)存使用效率不高的問(wèn)題,直到HipHop for PHP的出現(xiàn)。Facebook神秘的PHP項(xiàng)目HipHop for PHP終于揭開(kāi)面紗。這個(gè)項(xiàng)目由一個(gè)PHP到C++的轉(zhuǎn)換程序,一個(gè)重新實(shí)現(xiàn)的PHP運(yùn)行庫(kù),和許多常用PHP擴(kuò)展的重寫版本構(gòu)成,目的是旨在加速和優(yōu)化PHP。

用Facebook官方博客(無(wú)法直接訪問(wèn))上項(xiàng)目負(fù)責(zé)人趙海平(北大1987屆遺傳與分子生物專業(yè),普林斯頓計(jì)算機(jī)科學(xué)博士)的話說(shuō),HipHop項(xiàng)目對(duì)Facebook影響巨大。它目前已經(jīng)支撐了Facebook 90%的Web流量。由于HipHop,F(xiàn)acebook Web服務(wù)器上的CPU使用平均減少了50%,從而大大減少了服務(wù)器的需求。為了讓這一改進(jìn)也惠及社區(qū),他們決定將之開(kāi)源,希望能夠進(jìn)一步幫助提高更多大型復(fù)雜PHP網(wǎng)站的可伸縮性。

PHP和Facebook的問(wèn)題

眾所周知,F(xiàn)acebook的前端主要是用PHP寫的。趙海平說(shuō),過(guò)去六年Facebook從PHP語(yǔ)言的進(jìn)展上獲益良多。PHP非常簡(jiǎn)單,易學(xué)易用,好讀好調(diào)試,因此新工程師成長(zhǎng)很快,有利地促進(jìn)了Facebook的更快的創(chuàng)新。

PHP是一種腳本語(yǔ)言,其好處是編程效率高,能夠支持產(chǎn)品的快速迭代。但是與傳統(tǒng)的編譯語(yǔ)言相比,腳本語(yǔ)言的CPU和內(nèi)存使用效率不好。隨著Ajax技術(shù)的廣泛采用,加上SNS對(duì)動(dòng)態(tài)要求較高,這些缺點(diǎn)更顯得突出。對(duì)于每月超過(guò)4000億次PV的Facebook來(lái)說(shuō),如何實(shí)現(xiàn)擴(kuò)展,尤其具有挑戰(zhàn)性。

常見(jiàn)的辦法是直接用C++重寫PHP應(yīng)用中比較復(fù)雜的部分,作為PHP擴(kuò)展。實(shí)際上,PHP就轉(zhuǎn)變?yōu)橐环N膠水語(yǔ)言,連接前端HTML和C++應(yīng)用邏輯。從技術(shù)角度講這也沒(méi)有問(wèn)題,但是增加了技能需求,能夠在整個(gè)應(yīng)用上工作的工程師數(shù)量就大大減少了。學(xué)習(xí)C++只是編寫PHP擴(kuò)展的***步,接下來(lái)還要理解Zend API。由于Facebook的工程團(tuán)隊(duì)較小,每個(gè)工程師要支持100萬(wàn)以上的用戶。有些代碼不是團(tuán)隊(duì)里每個(gè)人都能看懂,這對(duì)于Facebook是無(wú)法接受的。

Facebook網(wǎng)站本身的可伸縮性更具挑戰(zhàn)性,因?yàn)閹缀趺看雾?yè)面瀏覽都是有個(gè)性化體驗(yàn)的登錄用戶發(fā)起。瀏覽主頁(yè) 時(shí),系統(tǒng)需要查詢所有朋友、朋友最重要的狀態(tài)更新、 根據(jù)隱私設(shè)置篩選結(jié)果,然后還要顯示評(píng)論、照片等等動(dòng)態(tài),這一切都需要在一秒內(nèi)完成。

HipHop for PHP

自2007年以來(lái),F(xiàn)acebook曾寫過(guò)幾種不同辦法解決這些問(wèn)題。其中包括用另一種語(yǔ)言重寫Facebook,但是由于開(kāi)發(fā)的復(fù)雜性和速度等原因,未能實(shí)現(xiàn)。他們還重寫了PHP的核心部分Zend引擎,并提交給了PHP項(xiàng)目,但最終還是沒(méi)有獲得所需的性能。***,他們選擇了HipHop,終于得償所愿。

有了HipHop,工程師可以編寫代碼,用PHP編寫組合***頁(yè)面的邏輯,并能夠繼續(xù)快速迭代,同時(shí)后端服務(wù)使用C++, Erlang, Java, Py thon編寫,提供新聞提要、搜索、聊天和其他核心功能。

HipHop開(kāi)發(fā)故事

趙海平透露,項(xiàng)目最初是來(lái)自幾年前Facebook公司一次Hackathon活動(dòng)(員工在一個(gè)晚上自由發(fā)揮,實(shí)驗(yàn)新的想法),他手工將PHP轉(zhuǎn)換為C++代碼,雖然語(yǔ)法上很類似,但是無(wú)論是CPU還是內(nèi)存使用,轉(zhuǎn)換后的C++代碼都大大優(yōu)于PHP。于是他想,如果構(gòu)建一個(gè)系統(tǒng),編程實(shí)現(xiàn)轉(zhuǎn)換,會(huì)怎么樣呢?

在此之前,已經(jīng)有了不少改善PHP性能的方法。Zend引擎在運(yùn)行時(shí)轉(zhuǎn)換PHP源代碼為運(yùn)行在Zend虛擬機(jī)上的opcode。開(kāi)源項(xiàng)目APC和eAccelerator將輸出緩存,為大多數(shù)PHP網(wǎng)站所使用。此外,還有Zend Server這樣的商業(yè)產(chǎn)品,通過(guò)opcode優(yōu)化和緩存,提高PHP速度。趙海平選擇了另一條道路,將PHP直接轉(zhuǎn)為C++,然后再變成本地機(jī)器碼。當(dāng)然,有許多開(kāi)源項(xiàng)目也是同樣的思路,Roadsend和phc編譯為C,Quercus編譯為Java,而Phalanger編譯為.NET。

Hackathon之后8個(gè)月,趙海平拿出了原型,足以說(shuō)明這條路可以走通,編譯后的代碼的確更快。不久,Iain Proctor和Minghui Yang加入進(jìn)來(lái)。接下來(lái)又開(kāi)發(fā)了10個(gè)月,在生產(chǎn)服務(wù)器上測(cè)試了6個(gè)月。然后正式上線部署,6個(gè)月之后,F(xiàn)acebook 90%以上的Web流量都使用了HipHop。

按趙海平的說(shuō)法,憑借HipHop,F(xiàn)acebook Web服務(wù)器上的CPU使用平均減少了50%,從而大大減少了服務(wù)器的需求。項(xiàng)目對(duì)Facebook影響巨大。為了讓這一改進(jìn)也惠及社區(qū),他們決定將之開(kāi)源,希望能夠進(jìn)一步幫助提高更多大型復(fù)雜PHP網(wǎng)站的可伸縮性。

HipHop的原理

HipHop將PHP代碼轉(zhuǎn)換為高度優(yōu)化的C++代碼,然后再用g++編譯器編譯。它可以保持語(yǔ)義等效地執(zhí)行源代碼,但為了提高性能,犧牲了一些很少用到的特性,比如eval()。

HipHop開(kāi)發(fā)中的主要困難在于,在PHP和C++這兩種很不一樣的語(yǔ)言之間怎么實(shí)現(xiàn)轉(zhuǎn)換。雖然PHP也可以寫一些很巧妙的動(dòng)態(tài)特性,但是大多數(shù)PHP代碼還是非常簡(jiǎn)單的。if (...) {...} else {..} 比f(wàn)oo($x) { include $x; } 肯定更常見(jiàn)。這為性能提高提供了機(jī)會(huì)。HipHop生成的代碼盡可能地使用函數(shù)和變量的靜態(tài)綁定。同時(shí),還使用類型推演來(lái)選出變量最可能對(duì)應(yīng)的某個(gè)類型,從而節(jié)省內(nèi)存。轉(zhuǎn)換過(guò)程分三步:

1. 靜態(tài)分析。收集聲明關(guān)系和依賴關(guān)系等信息。

2. 類型推演。選擇最合適的類型,是C++的標(biāo)量?還是String, Array, classes, Object或者Variant。

3. 代碼生成。大部分直接將PHP語(yǔ)句和表達(dá)式對(duì)應(yīng)為C++的語(yǔ)句和表達(dá)式。

在開(kāi)發(fā)過(guò)程中,還有一個(gè)副產(chǎn)品:HPHPi,是一個(gè)實(shí)驗(yàn)性的解釋器。通過(guò)它,不編譯PHP源代碼也可以運(yùn)行。它已經(jīng)用于HipHop自身的調(diào)試中。HipHop在保持了PHP優(yōu)點(diǎn)的同時(shí),也兼得了C++的性能優(yōu)勢(shì)。項(xiàng)目總共有30萬(wàn)行代碼,5000多個(gè)單元測(cè)試。所有這些都將以PHP開(kāi)源許可證形式發(fā)布到GitHub。

【編輯推薦】

  1. 詳細(xì)解讀PHP鏈接WEB SERVICE類
  2. 如何正確實(shí)現(xiàn)PHP獲取博客數(shù)據(jù)
  3. 探討PHP變量解析順序如何獲取提交數(shù)據(jù)
  4. 如何解決PHP無(wú)法修改header信息問(wèn)題
  5. PHP editor函數(shù)調(diào)用可視化編輯器
責(zé)任編輯:王曉東 來(lái)源: CSDN
相關(guān)推薦

2009-12-21 09:13:09

Ubuntu啟動(dòng)速度

2009-09-23 18:14:48

2010-03-31 10:25:41

MyEclipse

2012-01-12 13:01:07

寬帶

2023-04-03 08:33:27

2014-05-09 16:08:43

安徽寬帶提速

2021-03-30 10:39:44

數(shù)字人民幣區(qū)塊鏈貨幣

2011-12-28 14:53:54

傲游瀏覽器體驗(yàn)

2014-02-27 10:13:55

銳捷云課堂銳捷網(wǎng)絡(luò)

2024-11-13 12:34:00

2012-05-17 11:39:45

世界電信日寬帶提速寬帶

2016-12-08 16:53:37

5G通信網(wǎng)絡(luò)

2015-12-21 10:32:06

微軟Windows 10預(yù)覽版

2013-07-24 19:43:57

2018-04-26 10:30:49

迅雷

2009-03-19 09:20:18

ADSL寬帶無(wú)線網(wǎng)絡(luò)

2009-04-30 09:03:33

2013-05-07 11:39:57

中國(guó)電信寬帶提速寬帶中國(guó)

2013-08-09 10:31:01

SATA 3.2PCI-E存儲(chǔ)設(shè)備

2014-04-14 10:22:39

HTML5Famo.us
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 欧美成人精品一区二区男人看 | 欧美手机在线 | 久久丝袜 | 久久亚洲天堂 | 狠狠热视频 | 99国产精品99久久久久久粉嫩 | 久久精品91久久久久久再现 | 久久综合久 | 91深夜福利视频 | 午夜av一区二区 | 亚洲欧洲精品成人久久奇米网 | 精品美女在线观看视频在线观看 | 亚洲欧美一区二区三区1000 | 正在播放国产精品 | 精品九九九 | 北条麻妃国产九九九精品小说 | 欧美日韩久久精品 | 日日干日日操 | 久久亚洲欧美日韩精品专区 | 国产精品久久久 | 亚洲精品1| 亚洲精品久久久 | 国产精品视频网 | 91精品国产高清久久久久久久久 | 久久精品亚洲 | 国产精品成人一区 | av日韩精品 | 久草免费在线视频 | jⅰzz亚洲| 日韩精品色网 | 男女羞羞视频大全 | 波多野结衣在线观看一区二区三区 | 91免费视频 | 亚洲毛片在线观看 | 成人a视频片观看免费 | 亚洲一区综合 | 精品国产乱码 | 一区二区三区视频在线观看 | 天堂中文资源在线 | 九色综合网 | www.国产视频 |