搜尋
首頁後端開發php教程PHP與PHPNG戰鬥HHVM和Zephir

PHP Fights HHVM and Zephir with PHPNG

關鍵要點

  • PHPNG,PHP 的一個新分支,正在開發中,旨在大幅優化 PHP,並允許將來使用 JIT 編譯器進一步提升性能。它本身並非 JIT 編譯器,而是一個升級,為日後構建優秀的 JIT 編譯器奠定基礎。
  • NG 升級專注於重寫 Zend 引擎的核心部分,以實現對 PHP 數據類型的更好內存分配。預計這將提高性能並允許更簡潔的 API。
  • 雖然 PHPNG 承諾與現有擴展兼容,但並非所有擴展都受支持,一些測試也失敗了。這些兼容性問題在升級時可能會給共享主機提供商帶來挑戰。
  • PHP 核心開發團隊對變化的緩慢適應可能意味著,到 PHPNG 實施時,它可能只提供性能升級,而無法與 Hack 和 HHVM 競爭,後者已經提供了更多附加功能。

本文由 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 世界重新審視並思考正在發生的事情,很快它就流行起來。

競爭是令人敬畏的。無論這將我們帶到哪裡,我都對此感到樂觀。

2014 年 5 月 28 日文章更新

在與 Phil Sturgeon 進行電子郵件交流之後,並在閱讀官方聲明之後,我已經編輯了上述文本的部分內容。簡而言之,我將 PHPNG 分類為 JIT,而它顯然不是,而只是一個性能升級,這將允許核心團隊稍後開發一個合適的 JIT 編譯器。

關於 PHP、HHVM、Zephir 和 PHPNG 的常見問題

PHP 和 Zephir 的主要區別是什麼?

PHP 和 Zephir 都是用於 Web 開發的腳本語言。 PHP 是一種廣泛使用的開源語言,而 Zephir 是一種高級語言,允許開發人員為 PHP 編寫擴展。 Zephir 提供靜態類型語法,這有助於防止 PHP 中可能發生的錯誤。但是,PHP 擁有更大的社區和更多可用的資源,這對開發人員來說可能是有益的。

HHVM 與 PHPNG 如何比較?

HHVM(HipHop 虛擬機)和 PHPNG(PHP 新一代)都是執行 PHP 代碼的引擎。 HHVM 由 Facebook 開發,並使用即時 (JIT) 編譯方法來實現卓越的性能。另一方面,PHPNG 是 PHP 的一個內部項目,旨在提高 PHP 應用程序的性能。它通過更改 PHP 內部表示值和對象的方式來實現這一點,從而導致顯著的內存使用改進。

Zephir 是否仍在維護?

根據最近的更新,Zephir 不再積極維護。這意味著雖然該語言仍然可用,但它可能不會接收任何可能出現的潛在問題的更新或修復。

使用 Zephir 的優勢是什麼?

Zephir 為開發人員提供了許多優勢。它提供靜態類型語法,這有助於防止錯誤。它還允許開發人員為 PHP 編寫擴展,從而提供一種提高 PHP 應用程序性能的方法。

為什麼創建 Zephir?

創建 Zephir 的目的是提供一種高級語言,允許開發人員為 PHP 編寫擴展。目標是通過允許開發人員使用更容易優化和管理的語言編寫關鍵代碼部分來提高 PHP 應用程序的性能。

PHPNG 如何提高 PHP 應用程序的性能?

PHPNG 通過更改 PHP 內部表示值和對象的方式來提高 PHP 應用程序的性能。這導致顯著的內存使用改進,並可能導致 PHP 應用程序的執行時間更快。

隨著 HHVM 和 Zephir 的出現,PHP 的未來是什麼?

儘管出現了 HHVM 和 Zephir,PHP 仍然是廣泛使用的 Web 開發語言。雖然 HHVM 和 Zephir 提供了性能改進,但 PHP 擁有龐大的社區和豐富的可用資源。 PHP 的未來看起來很有希望,並且正在不斷努力改進其性能和功能。

我可以使用 Zephir 來編寫 PHP 擴展嗎?

是的,Zephir 的主要優勢之一是它允許開發人員為 PHP 編寫擴展。這可能是提高 PHP 應用程序性能的一種方法。

腳本語言和高級語言有什麼區別?

腳本語言是一種編程語言,用於自動化本來需要由人工操作員一步一步執行的任務。另一方面,高級語言是一種編程語言,它與計算機的細節具有很強的抽象性,使其更易於閱讀和編寫。

HHVM 的即時 (JIT) 編譯方法如何提高性能?

HHVM 的即時 (JIT) 編譯方法通過在執行之前將字節碼編譯為機器碼來提高性能。這允許進行優化,可以顯著提高 PHP 應用程序的執行速度。

以上是PHP與PHPNG戰鬥HHVM和Zephir的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
在Laravel中使用Flash會話數據在Laravel中使用Flash會話數據Mar 12, 2025 pm 05:08 PM

Laravel使用其直觀的閃存方法簡化了處理臨時會話數據。這非常適合在您的應用程序中顯示簡短的消息,警報或通知。 默認情況下,數據僅針對後續請求: $請求 -

php中的捲曲:如何在REST API中使用PHP捲曲擴展php中的捲曲:如何在REST API中使用PHP捲曲擴展Mar 14, 2025 am 11:42 AM

PHP客戶端URL(curl)擴展是開發人員的強大工具,可以與遠程服務器和REST API無縫交互。通過利用Libcurl(備受尊敬的多協議文件傳輸庫),PHP curl促進了有效的執行

簡化的HTTP響應在Laravel測試中模擬了簡化的HTTP響應在Laravel測試中模擬了Mar 12, 2025 pm 05:09 PM

Laravel 提供简洁的 HTTP 响应模拟语法,简化了 HTTP 交互测试。这种方法显著减少了代码冗余,同时使您的测试模拟更直观。 基本实现提供了多种响应类型快捷方式: use Illuminate\Support\Facades\Http; Http::fake([ 'google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

在Codecanyon上的12個最佳PHP聊天腳本在Codecanyon上的12個最佳PHP聊天腳本Mar 13, 2025 pm 12:08 PM

您是否想為客戶最緊迫的問題提供實時的即時解決方案? 實時聊天使您可以與客戶進行實時對話,並立即解決他們的問題。它允許您為您的自定義提供更快的服務

解釋PHP中晚期靜態結合的概念。解釋PHP中晚期靜態結合的概念。Mar 21, 2025 pm 01:33 PM

文章討論了PHP 5.3中介紹的PHP中的晚期靜態結合(LSB),允許靜態方法的運行時間分辨率調用以更靈活的繼承。 LSB的實用應用和潛在的觸摸

PHP記錄:PHP日誌分析的最佳實踐PHP記錄:PHP日誌分析的最佳實踐Mar 10, 2025 pm 02:32 PM

PHP日誌記錄對於監視和調試Web應用程序以及捕獲關鍵事件,錯誤和運行時行為至關重要。它為系統性能提供了寶貴的見解,有助於識別問題並支持更快的故障排除

如何註冊和使用Laravel服務提供商如何註冊和使用Laravel服務提供商Mar 07, 2025 am 01:18 AM

Laravel的服務容器和服務提供商是其架構的基礎。 本文探討了服務容器,詳細信息服務提供商創建,註冊,並通過示例演示了實際用法。 我們將從OVE開始

自定義/擴展框架:如何添加自定義功能。自定義/擴展框架:如何添加自定義功能。Mar 28, 2025 pm 05:12 PM

本文討論了將自定義功能添加到框架上,專注於理解體系結構,識別擴展點以及集成和調試的最佳實踐。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
2 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
2 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。