2011-05-09 95 views
5

從維基百科:PHP加速器VS即時編譯

大多數PHP加速器通過緩存PHP 腳本編譯的字節代碼,以避免解析的開銷和 編譯源代碼,每個請求的工作(部分或全部其中可能永遠不會執行)。爲了進一步提高性能,高速緩存的代碼被存儲在共享的存儲器中並且從那裏直接執行,從而最大限度地減少了在運行時慢速讀取和存儲器複製的數量。

即時編譯:

的JIT編譯器代表的混合方法,通過翻譯發生 不斷,如翻譯,但翻譯的代碼 緩存來減少性能下降。

所以在PHP上使用PHP加速器(如APC)對「即時」編譯PHP(假設可以這麼做)具有等效的性能影響......事實上,它們實際上是一樣?

回答

5

所以在PHP上使用PHP加速器(如APC)對「即時」編譯PHP(假設可以這樣做)具有等效的性能影響......事實上,它們實際上是一樣?

相同的概念,不同的執行。

當在大多數圈子中講到JIT時,它指的是將虛擬機字節碼編譯成本地字節碼。例如,Facebook的HHVM是一個使用JIT engine的PHP實現。

但是,PHP的本地虛擬機不會對原生字節碼進行JIT操作。事實上,傳統意義上它根本不會做JIT。雖然整個文件按需編譯爲PHP字節碼,但這實際上並不是JIT。

請注意術語「PHP加速器」。早在PHP4的日子裏,由PHP解析器創建的字節碼可以被優化一點以獲得更好的性能。這從PHP5早期就不需要了。只有說明了APC,Zend「Optimizer」和其他「加速器」產品爲提高PHP性能所做的事情是緩存字節碼。術語「加速器」不應再用於消除歧義。

如果您使用的是標準PHP,那麼您的想要一個字節碼緩存,只是避開產品說他們試圖做PHP字節碼優化。

+0

我知道這是舊帖子,也許事情已經改變,但Zend優化器+確實優化了代碼。 Quote:「此外,它適用幾個 字節碼優化模式,使代碼執行速度更快。」 https://github.com/zend-dev/ZendOptimizerPlus/ – XzKto 2013-02-22 11:18:45

+0

是的,這只是發生在PHP4中,這些優化造成了很多* *更大的差異。現在它[提議包含在覈心發行版中](https://wiki.php.net/rfc/optimizerplus),看看字節碼優化是否有所作爲會很有趣。 – Charles 2013-02-22 17:06:58

+1

截至6月,Facebook發佈了PHP Jit編譯器https://github.com/facebook/hiphop-php – Steven 2013-06-17 23:41:40