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

Publié le

[:fr]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.

Une conférence présentée par

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

[:]