Maison  >  Article  >  développement back-end  >  Comprendre le JIT de PHP 8

Comprendre le JIT de PHP 8

coldplay.xixi
coldplay.xixiavant
2020-08-19 17:14:253739parcourir

Comprendre le JIT de PHP 8

[Recommandations associées : Comprendre le JIT de PHP 88]

Comprendre le JIT de PHP 8

TL;DR

Le compilateur JIT (Just In Time) de Comprendre le JIT de PHP 8 8 sera intégré à Comprendre le JIT de PHP 8 en tant qu'extension. L'extension Opcache est utilisée pour convertir certains opcodes directement en instructions CPU au moment de l'exécution.

Cela signifie qu'après avoir utilisé JIT, Zend VM n'a pas besoin d'interpréter certains opcodes, et ces instructions seront exécutées directement en tant qu'instructions au niveau du CPU.

JIT de Comprendre le JIT de PHP 8 8

L'impact du compilateur Comprendre le JIT de PHP 8 8 Just In Time (JIT) est incontestable. Mais jusqu’à présent, j’ai constaté que l’on sait très peu de choses sur ce que JIT est censé faire.

Après de nombreuses recherches et abandons, j'ai décidé de vérifier moi-même le code source de Comprendre le JIT de PHP 8. En combinant certaines de mes connaissances du langage C et toutes les informations éparses que j'ai rassemblées jusqu'à présent, j'ai rédigé cet article qui, je l'espère, vous aidera à mieux comprendre le JIT de Comprendre le JIT de PHP 8.

Pour faire simple : lorsque le JIT fonctionne comme prévu, votre code n'est pas exécuté via la VM Zend, mais directement sous la forme d'un ensemble d'instructions au niveau du CPU.

C’est toute l’idée.

Mais pour mieux le comprendre, nous devons considérer le fonctionnement interne de Comprendre le JIT de PHP 8. Pas très compliqué, mais nécessite une introduction.

J'ai écrit un article de blog qui donne un aperçu général du fonctionnement de Comprendre le JIT de PHP 8. Si vous pensez que cet article est trop long, consultez-en un autre et revenez plus tard. Les choses deviendront plus faciles à comprendre.

Comment le code Comprendre le JIT de PHP 8 est-il exécuté ?

Comme nous le savons tous, Comprendre le JIT de PHP 8 est un langage interprété, mais que signifie cette phrase elle-même ?

Chaque fois que du code Comprendre le JIT de PHP 8 (script en ligne de commande ou application WEB) est exécuté, il doit passer par l'interpréteur Comprendre le JIT de PHP 8. Les plus couramment utilisés sont les interpréteurs Comprendre le JIT de PHP 8-FPM et CLI.

Le travail de l'interprète est simple : recevoir du code Comprendre le JIT de PHP 8, l'interpréter et renvoyer le résultat.

Les langues généralement interprétées suivent ce processus. Certains langages peuvent supprimer quelques étapes, mais l’idée générale est la même. En Comprendre le JIT de PHP 8, le processus est le suivant :

  1. lit le code Comprendre le JIT de PHP 8 et l'interprète comme un ensemble de mots-clés appelés Tokens. Ce processus permet à l'interprète de savoir quel code a été écrit dans chaque programme. Cette étape s'appelle Lexing ou Tokenizing.

  2. Après avoir obtenu la collection Tokens, l'interpréteur Comprendre le JIT de PHP 8 tentera de les analyser. Un arbre de syntaxe abstraite (AST) est généré via un processus appelé Parsing. Ici, AST est un ensemble de nœuds représentant les opérations à effectuer. Par exemple, « écho 1 + 1 » signifie en réalité « imprimer le résultat de 1 + 1 » ou plus précisément « imprimer une opération, cette opération est 1 + 1 ».

  3. Avec AST, il est plus facile de comprendre les opérations et les priorités. La conversion d'un arbre de syntaxe abstraite en une opération pouvant être exécutée par le CPU nécessite une expression de transition (IR), que nous appelons en Comprendre le JIT de PHP 8 Opcodes. Le processus de conversion des AST en Opcodes est appelé compilation .

  4. Avec les Opcodes, voici la partie amusante : exécuter le code ! Comprendre le JIT de PHP 8 dispose d'un moteur appelé Zend VM, capable de recevoir une série d'Opcodes et de les exécuter. Une fois tous les Opcodes exécutés, Zend VM termine le programme.

Ce diagramme peut le rendre plus clair pour vous :

Comprendre le JIT de PHP 8 的解释流程.

Une version simplifiée de la présentation du processus d'interprétation Comprendre le JIT de PHP 8.

Comme vous pouvez le constater. Voici une question : même si le code Comprendre le JIT de PHP 8 n’a pas changé, ce processus sera-t-il toujours suivi à chaque exécution ?

Retournons sur les Opcodes. C'est exact! C'est pourquoi l'extension Opcache existe.

Extension Opcache

L'extension Opcache est fournie avec Comprendre le JIT de PHP 8 et il n'est généralement pas nécessaire de la désactiver. Lorsque vous utilisez Comprendre le JIT de PHP 8, il est préférable d'activer Opcache.

Ce qu'il fait, c'est ajouter une couche de cache de mémoire partagée aux Opcodes. Son travail consiste à extraire les Opcodes nouvellement générés à partir de l'AST et à les mettre en cache afin que les étapes de Lexing/Tokenizing et d'Analyse puissent être ignorées pendant l'exécution.

Ceci est un diagramme de processus contenant l'extension Opcache :

使用 Opcache 的 Comprendre le JIT de PHP 8 解释流程

Processus d'interprétation de Comprendre le JIT de PHP 8 utilisant Opcache. Si le fichier a déjà été analysé, Comprendre le JIT de PHP 8 obtiendra les Opcodes mis en cache au lieu de l'analyser à nouveau.

Sauter parfaitement les étapes de lexing/tokénisation, d'analyse et de compilation

Recommandations d'apprentissage associées : programmation php(vidéo)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer