目錄
TL;DR
了解PHP 8的JIT 8 的 JIT
了解PHP 8的JIT的程式碼是怎麼執行的?
Opcache 擴充功能
首頁 後端開發 PHP8 了解PHP 8的JIT

了解PHP 8的JIT

Aug 19, 2020 pm 05:14 PM
jit

了解PHP 8的JIT

【相關推薦:了解PHP 8的JIT8

了解PHP 8的JIT

TL;DR

了解PHP 8的JIT 8 的JIT(Just In Time)編譯器將作為擴充整合到php 中 Opcache 擴充 用於執行時間將某些操作碼直接轉換為從cpu 指令。

這表示使用JIT後,Zend VM 不需要解釋某些操作碼,而這些指令將直接作為CPU級指令執行。

了解PHP 8的JIT 8 的 JIT

了解PHP 8的JIT 8 Just In Time(JIT)編譯器帶來的影響是毋庸置疑的。但到目前為止,我發現關於 JIT 應該做什麼卻知之甚少。

經過多次研究和放棄,我決定親自檢查了解PHP 8的JIT原始碼。結合我對C語言的一些知識和我目前收集到的所有零散信息,我提出了這篇文章,我希望它能幫助您更好地理解了解PHP 8的JIT的JIT。

簡單一點來說 : 當JIT如預期運作時,您的程式碼不會透過Zend VM執行,而是作為一組CPU級指令直接執行。

這就是全部的想法。

但為了更好地理解它,我們需要考慮php如何在內部運作。不是很複雜,但需要一些介紹。

我寫了一篇部落格文章,大致概述了php的工作原理。如果你覺得這篇文章寫太多了,就去查另一篇,稍後再來。事情會變得更容易理解。

了解PHP 8的JIT的程式碼是怎麼執行的?

總所周知, 了解PHP 8的JIT 是解釋型語言,但這句話本身是什麼意思呢?

每次執行 了解PHP 8的JIT 程式碼(命令列腳本或 WEB 應用程式)時,都要經過 了解PHP 8的JIT 解譯器。最常用的是 了解PHP 8的JIT-FPM 和 CLI 解譯器。

解釋器的工作很簡單:接收 了解PHP 8的JIT 程式碼,對其進行解釋,然後傳回結果。

一般的解釋型語言都是這個流程。有些語言可能會減少幾個步驟,但總體的思路相同。在 了解PHP 8的JIT 中,這個流程如下:

  1. 讀取 了解PHP 8的JIT 程式碼並將其解釋為一組稱為 Tokens 的關鍵字。這個過程讓解釋器知道各個程式都寫了哪些程式碼。 這一步稱為 Lexing 或 Tokenizing 。

  2. 拿到 Tokens 集合以後,了解PHP 8的JIT解譯器會試著解析他們。透過稱為 Parsing 的過程產生抽象語法樹(AST)。這裡 AST 是一個節點集表示要執行哪些動作。例如,「 echo 1 1 」實際意義是 「印 1 1 的結果」 或者更詳細的說 「印出一個動作,這個動作是 1 1」。

  3. 有了 AST ,可以更輕鬆地理解操作和優先順序。將抽象語法樹轉換成可以被 CPU 執行的操作需要一個用於過渡的表達式(IR),在 了解PHP 8的JIT 中我們稱為 Opcodes 。將 AST 轉換為 Opcodes 的過程稱為 compilation

  4. 有了 Opcodes ,有趣的部分就來了: executing 程式碼! 了解PHP 8的JIT 有一個稱為 Zend VM 的引擎,該引擎能夠接​​收一系列 Opcodes 並執行它們。執行所有 Opcodes 後, Zend VM 就會將程式終止。

這個圖可以讓你更清楚:

了解PHP 8的JIT 的解释流程.

#一個簡化版的 了解PHP 8的JIT 解釋流程概述。

如你所見。這裡有個問題:即使 了解PHP 8的JIT 程式碼沒改變,每次執行還是會走此流程嗎?

讓我們看回 Opcodes 。對了!這就是 Opcache 擴充 存在的原因。

Opcache 擴充功能

Opcache 擴充是 了解PHP 8的JIT 附帶的,通常沒必要停用它。使用 了解PHP 8的JIT 最好開啟 Opcache 。

它的作用是為 Opcodes 增加一個記憶體共享快取層。它的工作是從 AST 中提取新生成的 Opcodes 並快取它們,以便執行時可以跳過 Lexing/Tokenizing 和 Parsing 步驟。

這是包含 Opcache 擴充功能的流程示意圖:

使用 Opcache 的 了解PHP 8的JIT 解释流程

了解PHP 8的JIT 使用 Opcache 的解釋流程。如果檔案已經被解析,則 了解PHP 8的JIT 會為其取得快取的 Opcodes ,而不是再次解析。

完美的跳過了Lexing/Tokenizing 、 Parsing 和Compiling 步驟

相關學習推薦:php程式設計(影片)

#

以上是了解PHP 8的JIT的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱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.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

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

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)