目次
TL;DR
PHP 8 の JIT を理解する 8 の JIT
PHP 8 の JIT を理解する コードはどのように実行されますか?
ホームページ バックエンド開発 PHP8 PHP 8 の JIT を理解する

PHP 8 の JIT を理解する

Aug 19, 2020 pm 05:14 PM
jit

PHP 8 の JIT を理解する

【関連する推奨事項: PHP 8 の JIT を理解する8

PHP 8 の JIT を理解する

TL;DR

PHP 8 の JIT を理解する 8 の JIT (Just In Time) コンパイラは、拡張機能として PHP 8 の JIT を理解する に統合されます。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 を理解する コードを読み取り、それをトークンと呼ばれるキーワードのセットとして解釈します。このプロセスにより、インタプリタは各プログラムにどのようなコードが記述されているかを知ることができます。 このステップは、レクシングまたはトークン化と呼ばれます。

  2. #トークン コレクションを取得した後、PHP 8 の JIT を理解する インタープリターはそれらを解析しようとします。抽象構文ツリー (AST) は、Parsing と呼ばれるプロセスを通じて生成されます。ここで、AST は、実行する操作を表すノードのセットです。たとえば、「echo 1 1」は実際には「1 1 の結果を出力」、より具体的には「操作を出力、この操作は 1 1」を意味します。

  3. AST を使用すると、操作と優先順位を理解しやすくなります。抽象構文ツリーを CPU で実行できる操作に変換するには、PHP 8 の JIT を理解する ではオペコードと呼ばれる遷移式 (IR) が必要です。 AST をオペコードに変換するプロセスは、 コンパイル と呼ばれます。

  4. オペコードの楽しい部分は、コードの実行です。 PHP 8 の JIT を理解する には Zend VM と呼ばれるエンジンがあり、一連のオペコードを受け取って実行できます。すべてのオペコードが実行された後、Zend VM はプログラムを終了します。

この図を見ると、よりわかりやすくなります:

PHP 8 の JIT を理解する 的解释流程.

PHP 8 の JIT を理解する 解釈プロセスの概要の簡略版。 ######ご覧のように。ここで質問があります。PHP 8 の JIT を理解する コードが変更されていない場合でも、このプロセスは実行されるたびに実行されますか?

オペコードを振り返ってみましょう。正しい!これが、

Opcache 拡張機能

が存在する理由です。

Opcache 拡張機能

Opcache 拡張機能は PHP 8 の JIT を理解する に付属しているため、通常は無効にする必要はありません。 PHP 8 の JIT を理解する を使用する場合は、Opcache をオンにすることをお勧めします。

その機能は、メモリ共有キャッシュ層をオペコードに追加することです。その役割は、新しく生成されたオペコードを AST から抽出してキャッシュし、実行中に字句解析/トークン化と解析のステップをスキップできるようにすることです。

これは、Opcache 拡張機能を含むプロセス図です:

Opcache を使用した PHP 8 の JIT を理解する の解釈プロセス。ファイルがすでに解析されている場合、PHP 8 の JIT を理解する は再度解析する代わりに、そのファイルのキャッシュされたオペコードを取得します。 使用 Opcache 的 PHP 8 の JIT を理解する 解释流程

字句解析/トークン化、解析、コンパイルの手順を完全にスキップする

関連学習の推奨事項:

php プログラミング
(ビデオ)

#

以上がPHP 8 の JIT を理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)