AFUP Forum PHP 2019 Baromètre Planète PHP

La parole est aux speakers : Benoit Jacquemont (AFUP Day 2019 Rennes)

Jusqu’à l’AFUP Day 2019 Rennes, retrouvez nos interviews de speakers pour mieux comprendre leur parcours et le sujet qu’ils ou elles aborderont lors de leur conférence !

La conférence

PHP 8 et Just In Time Compilation

PHP 7 a apporté des gains de performance importants. Mais saviez-vous que ces gains sont principalement issus du travail préparatoire pour la mise en place du JIT?

La compilation Just In Time est un moyen de transformer l'opcode PHP directement en langage machine compris par le processeur, toujours pour obtenir des performances supplémentaires.

Et c'est aussi un des composants principaux de la future version majeure de PHP.

Ce talk sera l'occasion de plonger dans le fonctionnement de la technologie JIT choisie par l'équipe de développement du moteur Zend, ainsi que de présenter quelques premiers benchmarks.

La Fabrique
17/05/2019
10:05-10:45

Tu es un speaker régulier des événements AFUP. Comment trouves-tu l’inspiration pour nous soumettre toujours de nouveaux sujets ?

L’inspiration provient en général de 2 sources : mon travail quotidien (par exemple « Hunting memory leaks with PHP Meminfo », « OpCode », « strace ») et l’actualité (« HTTP/3 », « PHP 8 and JIT »), avec toujours en toile de fond l’envie de creuser un sujet qui sort un peu de l’ordinaire, mais qui est finalement très proche des développeurs.

Par exemple HTTP, c’est le protocole du web, c’est la base du travail de tout développeur Web. Mais comme c’est en même temps assez bas niveau, les développeurs Web n’ont pas forcément l’occasion de rentrer dedans. D’où le talk sur HTTP/3.

Pareil pour les talks « Opcode » ou « JIT sur PHP »: c’est à priori des sujets dont les développeurs PHP ne devraient pas trop s’inquiéter, mais en même temps je pense que ça peut être utile de comprendre comment tout cela fonctionne. Ça rend les choses moins opaques !
De plus, dans certains cas, l’utilité peut être immédiate, comme pour strace où la démystification de l’outil abaisse la barrière d’entrée à l’utilisation.

Et puis j’aime bien le challenge de prendre un sujet assez pointu et de le rendre compréhensible. Ca me permet de valider que je l’ai bien compris aussi 😉

Ta conférence portera sur PHP 8 et Just in Time compilation. Cela veut-il dire que PHP sera compilé et non plus un langage interprété ?

En fait, quand tu fais du PHP avec le moteur Zend (qui est largement l’interpréteur PHP le plus utilisé), tu as déjà une phase de compilation en opcode. Si tu fais du JavaScript avec NodeJS, tu as aussi du JIT via le moteur V8, donc une compilation vers du natif qui se fait.
Néanmoins, PHP et JavaScript sont des langages interprétés, contrairement par exemple à du C++ ou du Java qui eux sont compilés.

La différence se joue sur l’expérience développeur : pour un langage compilé, il y a une phase de compilation obligatoire qui doit être déclenchée par le développeur et qui se fait en dehors d’une phase d’exécution. Ça donne l’avantage de pouvoir être beaucoup plus poussé en termes de validation et d’optimisation par exemple.

Alors que dans le cas d’un langage interprété, le développeur exécute son code directement sans passer par une phase de compilation. Ça veut dire que la validation du code se fait alors au moment de l’exécution.

Et dans le cas du PHP et du JavaScript, on va avoir également une phase de compilation, afin de gagner en performance, qui va se faire au moment de l’exécution. Cette validation et cette compilation se doivent donc d’être très rapides pour ne pas impacter négativement les performances de l’application. Ce qui veut dire qu’il y aura potentiellement moins de choses qui pourront être validées que si on avait une phase de compilation extérieure à la phase d’exécution.

Mais on peut noter que sur la partie compilation pure, d’un point de vue technologique, on retrouve les mêmes solutions techniques sur des langages compilés et interprétés, à savoir le JIT.

Donc pour répondre à la question : PHP restera un langage interprété, puisque ce n’est pas au développeur de gérer la compilation.

Pourrais-tu nous expliquer les avantages d’utiliser ce JIT par rapport à l’utilisation d’HHVM ?

En fait le projet HHVM a annoncé qu’ils arrêtaient le support de PHP, et qu’ils se concentraient sur Hack Lang, qui est un dérivé du PHP en termes de syntaxe, mais qui a ses propres spécificités. Donc en réalité, HHVM n’est plus une solution pérenne pour faire tourner les projets PHP.

En tout cas, on peut remercier HHVM d’avoir amené cette concurrence saine dans le monde de PHP qui a donné un bon coup de motivation à l’équipe en charge du moteur Zend pour travailler sur les performances, ce qui nous a donné PHP 7 et maintenant le JIT.

Le speaker

Benoit Jacquemont
Benoit Jacquemont
Benoit Jacquemont est tombé dans le web en 2000 après avoir une première expérience sur des logiciels d'encaissements. De Java à PHP, de Oracle à MySQL et des applications de gestion aux sites de eCommerce, il roule sa bosse sur les projets, toujours à forte composante OpenSource, au sein du groupe Smile. Il en devient le CTO en 2009 alors que l'entreprise compte près de 450 salariés. En janvier 2013, il co-fonde Akeneo avec Frédéric de Gombert, Nicolas Dupont et Yoav Kutner. L'aventure startup commence alors pour lui, en tant que CTO d'Akeneo.

Autres interviews

En poursuivant votre navigation sur ce site, vous acceptez l’utilisation des cookies pour améliorer votre navigation. plus d'infos

1. Qu’est-ce qu’un cookie?

Un Cookie est un petit fichier texte enregistré sur votre terminal (ordinateur, tablette, smartphone, etc.), à l’occasion de la consultation d’un service en ligne grâce à votre logiciel de navigation. Il permet à son émetteur d’identifier le terminal dans lequel il est enregistré, pendant la durée de validité ou d’enregistrement du Cookie. Lors de la consultation de notre site Internet, des informations relatives à la navigation de votre terminal sont susceptibles d'être enregistrées dans ces fichiers dits "Cookies". Ces derniers sont installés sur votre terminal, sous réserve des choix que vous auriez exprimés concernant les Cookies et que vous pouvez modifier à tout moment.

2. A quoi servent les cookies émis sur notre site ?

Seul l’émetteur d’un cookie est susceptible de lire ou de modifier les informations qui y sont contenues.
Les cookies utilisés sur notre site permettent :

3. Vos choix concernant les cookies

Vous disposez de différents moyens pour gérer les cookies. Tout paramétrage que vous pouvez entreprendre sera susceptible de modifier votre navigation sur notre site et sur Internet en général et vos conditions d'accès à certains services de notre site nécessitant l'utilisation de cookies. Vous pouvez à tout moment exprimer et modifier vos souhaits en matière de cookies, par les moyens décrits ci-dessous. L'accord sur les cookies L'enregistrement d'un cookie dans un terminal est essentiellement subordonné à la volonté de l'utilisateur du terminal, que celui-ci peut exprimer et modifier à tout moment et gratuitement à travers les choix qui lui sont offerts par son logiciel de navigation. Si vous avez accepté dans votre logiciel de navigation l'enregistrement de cookies dans votre terminal, les cookies intégrés dans les pages et contenus que vous avez consultés pourront être stockés temporairement dans un espace dédié de votre terminal. Ils y seront lisibles uniquement par leur émetteur.

Le refus des cookies Si vous refusez l'enregistrement de cookies dans votre terminal, ou si vous supprimez ceux qui y sont enregistrés, vous ne pourrez plus bénéficier d'un certain nombre de fonctionnalités qui sont néanmoins nécessaires pour naviguer dans certains espaces de notre site. Tel serait le cas si vous tentiez d'accéder à votre compte ou à votre abonnement qui nécessite de vous identifier. Tel serait également le cas lorsque nous, ou nos prestataires, ne pourrions pas reconnaître, à des fins de compatibilité technique, le type de navigateur utilisé par votre terminal, ses paramètres de langue et d'affichage ou le pays depuis lequel votre terminal semble connecté à Internet. Le cas échéant, nous déclinons toute responsabilité pour les conséquences liées au fonctionnement dégradé de nos services résultant de l'impossibilité pour nous d'enregistrer ou de consulter les cookies nécessaires à leur fonctionnement et que vous auriez refusés ou supprimés. Les choix offerts par votre logiciel de navigation Vous pouvez configurer votre logiciel de navigation de manière à ce que des cookies soient enregistrés dans votre terminal ou, au contraire, qu'ils soient rejetés, soit systématiquement, soit selon leur émetteur. Vous pouvez également configurer votre logiciel de navigation de manière à ce que l'acceptation ou le refus des cookies vous soient proposés ponctuellement, avant qu'un cookie soit susceptible d'être enregistré dans votre terminal. Pour la gestion des cookies et de vos choix, la configuration de chaque navigateur est différente. Elle est décrite dans le menu d'aide de votre navigateur, qui vous permettra de savoir de quelle manière modifier vos souhaits en matière de cookies. Selon votre navigateur, consultez le lien ci-dessous pour configurer votre navigateur et refuser les cookies :