PHP 8.0 aura un compilateur Just-In-Time
lun, 01/04/2019 - 16:24
Et non cette actualité n'est pas un poisson d'avril :-) Il est depuis longtemps question d'un compilateur Just-In-Time ou JIT pour PHP et celui-ci est même en développement dans une branche parallèle du langage. Mais un vote du 30 mars a approuvé le JIT pour PHP 8 indique Phoronix en s'appuyant sur ce billet.
Actuellement le code d'un script PHP est traduit en opcode, quelque chose de similaire au bytecode de Java, avant d'être exécuté par le runtime, à savoir la Zend VM. Il existe déjà depuis longtemps une optimisation dite cache d'opcode évitant de reproduire cette phase tant qu'un script n'est pas modifié.
Le compilateur JIT lui, par définition, traduira l'opcode en code machine pour une exécution directe dans le CPU en court-circuitant la Zend VM.
Toute la question est maintenant de savoir si et surtout dans quelles circonstances le jeu en vaut la chandelle ? Lorsqu'il s'agira d'accélérer un site web rien ne sera moins sûr, comme le fait remarquer le billet mentionné plus haut. En effet pour un site web (comme pour de nombreuses applications d'ailleurs) le goulet d'étranglement se situe au niveau des entrées/sorties. Les accès à la base de données principalement dans le cas d'un site web.
Alors pour quoi faire un JIT dans PHP ? Le billet répond à cette question : cela ouvre en fait la porte à des choses telles que l'apprentissage automatique, le rendu 3d, le rendu 2d (gui) et l'analyse de données, pour n'en nommer que quelques-unes.