PHP的JIT是什麽?PHP8的JIT

字號+ 編輯: Snake 修訂: 种花家 來源: 脚本之家 2023-09-09 我要說兩句(0)

一直以來,大家都在討論 PHP 8 中是否會支持 JIT(Just-In-Time)即時編譯執行功能,官方已經將其引入。

JIT 的好處

主要是 JIT 帶來的性能提升,以及性能提升對整個語言使用場景的擴展及語言生態發展的支持。

1、目前已經很難通過常槼手段提升 PHP 的性能,JIT 基本上是目前性能提升的唯一手段;

2、JIT 帶來的性能提升可以讓 PHP 在更多使用場景( CPU 密集)中發揮作用;

3、可以使用 PHP 來開發内置函數,而不用擔心性能方面的問題。這一方面可以加速語言的發展(更多人可以參與進來),同時也可以減少目前使用 C 開發容易出現的内存管理、溢出等問題。

PHP 實現了一個虛擬機 Zend VM,它會將人類可讀腳本編譯成虛擬機理解的指令,也就是操作碼,這個執行階段就是“編譯時(Compile Time)”;在“運行時(Runtime)”執行階段,虛擬機 Zend VM 會執行這些編譯好的操作碼。

通常編譯時與運行時兩個階段是獨立分開的,腳本編譯完成後,像 APC 與 OPCache 這樣的字節碼緩存組件會緩存這些操作碼。而 JIT 去掉了編譯時階段,它將這編譯時與運行時兩個階段合爲一體,實現即時編譯與執行。

JIT 是一種編譯器策略,它將代碼表述爲一種中間狀態,在運行時將其轉換爲依賴於體系結構的機器碼,並即時執行。在 PHP 中,這意味著 JIT 將爲 Zend VM 生成的指令視爲中間表述,並以依賴於體系結構的機器碼執行,也就是說托管代碼的不再是 Zend VM,而是更爲底層的 CPU。

雖然自 PHP 7.0 以來,通過優化核心數據結構 HashTable、強化 Zend VM 中某些操作碼與持續改進 OPCache 的 Optimizer 組件等具體措施,PHP 性能得到了顯著提升,但是實際上這些優化似乎已經走到極限了。現在 JIT 從底層著手,被認爲是目前提升 PHP 性能的最佳出路。

關於是否引入 JIT 的官方投票結果已於近日公布,因爲大部分核心開發者投了贊成票,所以 PHP 8 中將會支持 JIT。

另外值得一提的是,PHP JIT 對於使用 PHP 的網站來說提速可能並不明顯,因爲 JIT 在 CPU 密集型的代碼上效果最好,而一般情況下,用 PHP 編寫的程序都是 I/O 密集型的。

簡單來說就是,PHP 程序往往受限於 I/O 而不是 CPU,使 PHP 代碼運行速度變慢的因素往往是它們正在執行的 I/O 操作,包括連接、讀取和寫入數據庫、高速緩存、文档與套接字等。

PHP 中 CPU 密集型代碼的一個例子是 Zend/bench.php。

那麽 PHP 中的 JIT 將會在哪裡發揮作用呢?答案是數學領域。

閲完此文,您的感想如何?
  • 有用

    0

  • 沒用

    0

  • 開心

    0

  • 憤怒

    0

  • 可憐

    0

1.如文章侵犯了您的版權,請發郵件通知本站,該文章將在24小時内刪除;
2.本站標注原創的文章,轉發時煩請注明來源;
3.交流群: 2702237 13835667

相關課文
  • mac開發接入微信公衆號接口返回報錯 cURL error 56: SSLRead() return error -9806

  • PHP的換行符是什麽

  • pecl安裝程序時報錯Array and string offset access syntax with curly braces is no longer supported

  • 由於商家傳入的H5交易參數有誤,該筆交易暫時無法完成,請聯繫商家解決

我要說說
網上賓友點評