關鍵要點
本文由 NewRelic 贊助。感謝您支持使 SitePoint 成為可能的讚助商! 文章的先前版本錯誤地將 PHPNG 描述為 JIT 編譯器。情況並非如此,必要的修改已完成。請參閱文章底部了解更多信息。
舊世界中的混亂!幾年前,首先是 HipHop,沒有人關注。然後突然,HHVM 出現了,引入了 Hack,一切都亂套了——Facebook 創建了一個新的 PHP 並破壞/修復了一切(取決於你問誰)。此外,Zephir 出現並威脅要對所有PHP 代碼進行C 級編譯,並完全支持當前的PHP 擴展(雖然Zephir 不打算取代C 或PHP,但它確實允許你編寫類似PHP 的代碼並將其編譯為C,這使你可以輕鬆地將所有PHP 應用程序重寫為可以進行封閉源代碼編譯以提高速度和安全性的格式)。對於替代 PHP 運行時來說,這是蘑菇生長的時刻,HippyVM 也出現了。
在這一系列變化中,又出現了一個新的聲音:PHPNG。
正如 Manuel Lemos 介紹的那樣,PHPNG 是 PHP 的一個新分支,將在 PHP 的一個尚未確定的未來版本中出現。
這個名字有點俗氣(NG = 新一代),而且表達笨拙的 PHP 版本是核心團隊大幅優化 PHP 並允許將來使用 JIT 編譯器進一步提升性能的嘗試。 PHPNG 本身並非 JIT 編譯器,而是一個升級,為日後構建優秀的 JIT 編譯器奠定基礎。 PHPNG 分支本身不包含任何 JIT 功能。
PHPNG 由 Dmitry Stogov 在一個內部新聞組主題中提出。 Dmitry 負責 Zend 的性能和優化,主要處理 Zend 引擎。 NG 升級專注於重寫 Zend 引擎的核心部分,以實現對 PHP 數據類型的更好內存分配。
摘自 Reddit:
NG 的存在是因為 Zend 在引入 JIT 時進行的實驗在現實世界中失敗了,原因在於引擎當前的設計方式,主要是因為我們一直都在分配所有內容。 NG 補丁改變了規範,因此我們不再默認分配 zvals,這提高了性能並允許更簡潔的 API。
與任何“改進 PHP”的嘗試一樣,這次嘗試也有其優缺點。
更快的執行意味著更快的資源分配,意味著更快的請求處理,意味著更大的請求吞吐量。初步結果令人鼓舞(1,2)。
性能仍需要與其他替代方案進行基準測試,但 10-30% 的提升不容小覷。
由於此升級是在官方 Zend 引擎上進行的,而不是替代運行時,因此它幾乎保證了與當前擴展的兼容性。人們猶豫是否遷移到 HHVM 的最大原因之一是他們習慣使用的基本擴展不可用(在我的例子中是 Phalcon)。就我個人而言,一個支持 Phalcon 的更快的 PHP 引擎會讓我對 Hack 當今提供的升級不太關心。
所以它保證了擴展兼容性……等等。是嗎?哦,不。
好得令人難以置信。
並非所有擴展都受支持,一些測試失敗了,我們還有更多改進的想法。
公平地說,NG 還很年輕。比我們在 PHP 世界中處理過的任何東西都要年輕得多,而且更像是一個重大的更新——因此,一些兼容性問題是不可避免的。但我同意 Manuel 的說法,當升級時間到來時,這可能是大多數共享主機提供商的痛點。
儘管我相當反對共享主機提供商,但我完全理解這可能帶來的問題。當我們試圖讓提供商“使用PHP5”時,以及最近一次他們需要使用更新版本的PHP 時,我們都遇到了類似的混亂,因此讓他們進行可能引入BC 中斷的重大轉變將是一項艱鉅的任務。
這種對變化的恐懼將鞏固舊版 PHP 的使用,反過來又會滋生更多在過時代碼上工作的極其不合格的 PHP 開發人員,完全忽略最佳實踐和漏洞。簡而言之,我們將重演歷史。這聽起來可能像是世界末日,正如一些人指出的那樣,但我每天都深入參與PHP 的所有領域,並通過一個完整的收件箱接觸到最低質量的領域,我看到了我們現在所處的位置以及我們將去向何處。然而,並非一切都是黑暗的——Heroku 和 DigitalOcean 等解決方案將使人們能夠以低於(或等於)共享主機提供商的價格運行最新和自定義版本的 PHP。
我最真誠的希望是核心團隊能夠將新的Zend 引擎完善到足以保持與所有擴展向後兼容的程度,但會向所有未能遵守NG 規範和最佳實踐的擴展開發人員發出編譯警告。
核心開發團隊因適應變化緩慢而臭名昭著。其他語言中存在多年的現代功能在過去被否決了,直到幾年後才被實施。
這是否是由於核心開發團隊缺乏遠見,就像Anthony 和Phil 的帖子所說的那樣,或者是因為它規模太小且資金不足而無法快速進行任何重大更改,這無關緊要——內部緩慢意味著我們可能永遠無法在公開場合看到NG 並擺脫“alpha”狀態,就像神秘的PHP6 的情況一樣。
這讓我們想到了最後一點。
由於在 PHP 核心開發團隊中經常看到的固有緩慢性,到 NG 實施時(如果真的實施的話),它將只提供性能升級。到那時,Hack 和 HHVM(遠遠超過標準 PHP)將提供如此多的附加功能,比賽將被操縱,PHP 將毫無勝算。
Hack 和 Zephir 中今天可用的類型提示將在這些實現中紮根。多線程、編譯、獨立 Web 服務器——所有這些功能今天都在替代解決方案中可用,而且它們幾乎都已準備好投入生產。雖然核心開發團隊正在研究其中的一些功能,而且PHP 可能在HHVM 之前就擁有IIS 支持(這顯然對某些人來說很重要),但我個人仍然認為這對於PHP 官方方面來說還不夠迅速的進展。
即使核心團隊確實決定對存在問題和需求的所有這些特殊功能投“贊成票”,他們也需要花費太長時間來實現——而且他們默認會落後,除非引入範式轉變並改變他們的整個工作方式。將源代碼移至 GitHub 是一個好舉動,但它只是觸及了表面。
也就是說,Rasmus 本人據說認為 HHVM 在幾年內成為 PHP 的核心引擎並非科幻場景。
撇開 Facebook 相關的所有權(這本身就帶有許多負面含義),HHVM 通過展示如何進行此類升級來推動開發人員朝著正確的方向前進。這推動了創新,並迫使那些長期以來一直安於自己寶座的人站起來,伸展雙腿,看看他們是否還能奔跑。 Facebook 的積極進取迫使 PHP 世界重新審視並思考正在發生的事情,很快它就流行起來。
競爭是令人敬畏的。無論這將我們帶到哪裡,我都對此感到樂觀。
在與 Phil Sturgeon 進行電子郵件交流之後,並在閱讀官方聲明之後,我已經編輯了上述文本的部分內容。簡而言之,我將 PHPNG 分類為 JIT,而它顯然不是,而只是一個性能升級,這將允許核心團隊稍後開發一個合適的 JIT 編譯器。
PHP 和 Zephir 都是用於 Web 開發的腳本語言。 PHP 是一種廣泛使用的開源語言,而 Zephir 是一種高級語言,允許開發人員為 PHP 編寫擴展。 Zephir 提供靜態類型語法,這有助於防止 PHP 中可能發生的錯誤。但是,PHP 擁有更大的社區和更多可用的資源,這對開發人員來說可能是有益的。
HHVM(HipHop 虛擬機)和 PHPNG(PHP 新一代)都是執行 PHP 代碼的引擎。 HHVM 由 Facebook 開發,並使用即時 (JIT) 編譯方法來實現卓越的性能。另一方面,PHPNG 是 PHP 的一個內部項目,旨在提高 PHP 應用程序的性能。它通過更改 PHP 內部表示值和對象的方式來實現這一點,從而導致顯著的內存使用改進。
根據最近的更新,Zephir 不再積極維護。這意味著雖然該語言仍然可用,但它可能不會接收任何可能出現的潛在問題的更新或修復。
Zephir 為開發人員提供了許多優勢。它提供靜態類型語法,這有助於防止錯誤。它還允許開發人員為 PHP 編寫擴展,從而提供一種提高 PHP 應用程序性能的方法。
創建 Zephir 的目的是提供一種高級語言,允許開發人員為 PHP 編寫擴展。目標是通過允許開發人員使用更容易優化和管理的語言編寫關鍵代碼部分來提高 PHP 應用程序的性能。
PHPNG 通過更改 PHP 內部表示值和對象的方式來提高 PHP 應用程序的性能。這導致顯著的內存使用改進,並可能導致 PHP 應用程序的執行時間更快。
儘管出現了 HHVM 和 Zephir,PHP 仍然是廣泛使用的 Web 開發語言。雖然 HHVM 和 Zephir 提供了性能改進,但 PHP 擁有龐大的社區和豐富的可用資源。 PHP 的未來看起來很有希望,並且正在不斷努力改進其性能和功能。
是的,Zephir 的主要優勢之一是它允許開發人員為 PHP 編寫擴展。這可能是提高 PHP 應用程序性能的一種方法。
腳本語言是一種編程語言,用於自動化本來需要由人工操作員一步一步執行的任務。另一方面,高級語言是一種編程語言,它與計算機的細節具有很強的抽象性,使其更易於閱讀和編寫。
HHVM 的即時 (JIT) 編譯方法通過在執行之前將字節碼編譯為機器碼來提高性能。這允許進行優化,可以顯著提高 PHP 應用程序的執行速度。
以上是PHP與PHPNG戰鬥HHVM和Zephir的詳細內容。更多資訊請關注PHP中文網其他相關文章!