原文鏈接: http://coderoncode.com/2013/07/24/introduction-hhvm.html
“HHVM(HIpHop Virtual Machina)把PHP代碼轉換成高層次的字節碼(普遍認為是一種中間語言)。然后這樣的字節碼在運行時被JIT(just-in-time)編譯器動 態地轉換成x64機器碼。基于這樣的考慮,HHVM和包括C#/CLR和Java/JVM在內的其他語言中的虛擬機類似。”
有點長的歷史
在2008年早期Facebook網站便工作在HipHop(一個PHP執行引擎,現在是HPHP)上。其原始的動機便是把Facebook網站中 大量的PHP代碼轉換成C++代碼,以便節約資源和提升應用性能。其原始版本便是HPHPc(一個把PHP代碼轉換成C++代碼的編譯器)。
在接下來的兩年時間里Facebook網站繼續工作在HipHop上,這時候的HipHop增加了HPHPi(一個HPHP的”開發模式”版本)和 HPHPd(HipHop debugger)。運行在HipHop平臺上的PHP應用程序允許開發者查看和單步執行代碼并且可以交互式地調試。
在巔峰時期,運行在HipHop上的PHP代碼在性能上是運行在ZEND引擎上的PHP代碼的6倍。然而,在HipHop的第一次迭代版上仍然有幾個缺點:
1、HPHPc不是完全的支持PHP語言,最明顯的便是不支持create_function和eval這兩個函數。誠然,我并不認為對于不支持eval這個函數是件壞事。
2、Facebook的開發者必須維護兩個不同的引擎(HPHPc和HPHPi),這樣的結果便是導致重復的工作和浪費資源。
3、最后,HPHPc需要完全不同的部署過程,這樣會妨礙到它被PHP開發者所采納。
鑒于這些問題,Facebook公司在2010年早期采取了兩個關鍵行動。其一便是把HipHop平臺開源了,開源這樣的一個項目是一個偉大的方 式,便于構建一個圍繞著這個項目的社區并且可以從社區中獲取到來自外界的幫助。其二,Facebook公司開始了HipHop在現代版本上的發展,這便是 HHVM(HipHop virtual Machine)。HHVM提升了HPHPc的健壯性并且修正了許多關鍵性的問題。
HHVM建立在HPHPc的頂端,其工作方式便是把PHP代碼轉換成高層次的字節碼(一種中間語言)。這樣的字節碼在運行時被JIT(Just-In-Time)編譯器動態地轉換成機器碼。
如果你像我一樣,你可能對字節碼、機器碼和Just-In-Time編譯器還有著模糊的記憶。所以,讓我們暫時偏離一下主題快速地回顧下這些概念,然后講解下他們是如何在HHVM中扮演關鍵性的角色。
字節碼、機器碼以及JIT,哦,我的…!
字節碼: 它是一個人們讀不懂的代碼,被設計來讓解釋器或者編譯器高效執行的。當HHVM第一次導入我們的項目,它把所有的PHP代碼轉換成字節碼這樣的中間形式。產生的字節碼和特定類型的計算機結構無關,因此可以很方便地在不同的系統間移植。
機器碼: 它是一組被設計成可以由CPU直接執行的指令。如果你曾經玩過Assembly(誰沒玩過呢?),你一定能很好的理解什么是機器碼。對于沒有興趣玩assembly或者類似語言的極少數的你們來說,機器碼是由編譯器或者解釋器產生的并且可以直接被CPU執行的代碼。
JIT(Just In Time)編譯器: Just in time編譯技術是用來提升軟件性能的一項技術。它的實現原理便是在執行期間編譯存儲在內存中字節碼,JIT編譯器導入這些字節碼并且編譯成所需要的部分。
通過應用這些技術所獲得的性能和速度便能給HipHop及隨后的HHVM提供核心優勢。保持一個PHP代碼庫,同時實現性能上堪比編譯過的應用程序。
目前的HHVM基本上支持整個的PHP5.4版本,然而HHVM仍然有妨礙到一些應用程序執行的許多bugs。基于這樣的原因,Facebook公 司設置的目標便是能讓開源的頂尖的前20個PHP應用程序運行在HHVM上。第一個運行在其上的最流行的應用便是Wordpress。
接下來
現在我們對于HHVM究竟是做什么的及其優勢有了很好的了解,并且對于運行在其上的應用程序我們可以很方便的開始測試了。在接下來的文章里,我會介 紹到如何在虛擬機上安裝HHVM,以及在你的應用程序上運行基準測試,最后(雙手合十),介紹如何在HHVM上運行Magento。
?
更多文章請關注我的個人博客: http://www.nomoneynowife.com
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
