Compilateurs PHP gratuits. Statistiques complètes de la mémoire

PHP est un langage de programmation interprété, chaque requête est analysée et « exécutée » code source. Bien entendu, cette approche est très pratique au stade du développement du projet, mais elle introduit une étape supplémentaire dans le processus d'exécution du code de production. Ainsi l'interprétation, à première vue point fort PHP coûte du temps CPU et des ressources supplémentaires.

Ci-dessous, nous parlerons des compilateurs qui vous permettent de compiler code php en C++, et c'est dans l'exécutable. Ainsi Applications PHP exécuté directement par le processeur, en contournant l'interpréteur.

Vérifions si tout va si bien dans la pratique.

Comment fonctionne l'interprète

L'interprétation du code PHP se déroule en deux étapes :

  1. Analyse de code et génération d'opcodes (opcodes Zend) - instructions compréhensibles pour l'interprète.
  2. Exécution des opcodes.

Si la première phase se prête bien à l'optimisation (à l'aide d'un cache d'opcodes), la seconde est assez fermée : l'interpréteur est toujours un intermédiaire entre l'ensemble des instructions et le processeur qui les exécute. Sans interprète, le processeur ne peut pas comprendre quoi faire avec les opcodes.

Pour supprimer le lien interpréteur, des compilateurs ont été inventés, dont le plus populaire et le plus récent est HipHop de Facebook. Sentons-le de plus près.

Hip-Hop PHP

HipHop est écrit par les développeurs de Facebook et est une application qui :
  1. optimise le code PHP
  2. convertit en C++
  3. génère à partir de votre application un serveur web multithread qui l'exécute
  4. compile en code exécutable en utilisant g++

Ainsi sur Entrée PHP code, la sortie est un serveur, dont une partie est la fonctionnalité écrite.

Voyons comment HipHop peut gérer la compilation d'une application écrite à l'aide d'un framework, tel que Wordpress.

Compilation de Wordpress

Après avoir installé HipHop, dans le dossier src/hphp/ nous obtiendrons le fichier hphp, qui est le compilateur. Avant le début de la compilation, définissez les variables d'environnement :

Cd .. # aller dans le dossier avec hiphop export HPHP_HOME=`pwd` export HPHP_LIB=`pwd`/bin export CMAKE_PREFIX_PATH=`/bin/pwd`/../

et allez-y !

Téléchargez Wordpress et décompressez l'archive :

Wget http://wordpress.org/latest.tar.gz tar zxvf last.tar.gz

Copiez wp-config-sample.php dans wp-config.php et spécifiez les paramètres de connexion à la base de données (dans les paramètres de l'hôte, nous spécifions 127.0.0.1, pas localhost).

Pour une compilation réussie, vous devez patcher un peu Wordpress :

  1. Ouvrez wp-includes/js/tinymce/plugins/spellchecker/classes/SpellChecker.php et remplacez : function &loopback(/* args.. */) ( return func_get_args(); ) par function &loopback(/* args.. */ ) ( $ret = func_get_args(); return $ret; )
  2. Dans wp-includes/query.php, au lieu de if (!isset($q["suppress_filters"])) $q["suppress_filters"] = false; insérer $q["suppress_filters"] = true ;

Wordpress est prêt.

Hiphop doit spécifier la liste des fichiers que nous allons compiler - nous l'obtiendrons et la sauvegarderons dans files.list :

Trouver. -name "*.php" > fichiers.liste

Tout est prêt pour la compilation, procédons :

$HPHP_HOME/src/hphp/hphp --input-list=files.list -k 1 --log=3 --force=1 --cluster-count=50

Après avoir terminé la commande, dossier temporaire(au début de la compilation, hphp affichera son chemin, quelque chose comme « /tmp/hphp_ptRgV1 »), nous obtenons un serveur web compilé. Lançons-le (si quelque chose bloque sur le port 80, par exemple apache ou nginx, vous devez d'abord l'arrêter pour libérer le port) :

Sudo /tmp/hphp_6s0pzd/program -m server -v "Server.SourceRoot=`pwd`" -v "Server.DefaultDocument=index.php" -c $HPHP_HOME/bin/mime.hdf

Voilà ! En allant sur http://localost, nous verrons un blog Wordpress fonctionnel.

Performance

Voyons s'il y aura une augmentation des performances par rapport à la version non compilée de WordPress fonctionnant sur Apache2. Vous trouverez ci-dessous des graphiques illustrant la dépendance de la vitesse de génération des pages sur le nombre d'utilisateurs parallèles.

Comme vous pouvez le constater, les résultats ont été choquants : le blog compilé fonctionne en moyenne 6 fois plus vite ! Le nombre moyen de requêtes traitées par seconde dans la version non compilée est de 9, et dans la version compilée il est de 50 ! Je ne sais pas pour vous, mais ces résultats m’ont étonné ; je ne m’attendais pas à une telle augmentation des performances.

Résumons-le

Après des résultats aussi époustouflants, on ne peut dire qu'une chose : les gars de Facebook ont ​​​​fait un excellent travail. Le compilateur fait vraiment une fusée avec une application, et même si l'application doit être préparée avant la compilation, le résultat en vaut la peine.

Sur le sujet :

Si vous avez aimé l'article, cliquez sur Google +1 - cela me donnera plus de motivation pour écrire et ce sera juste un plaisir.

Presque tous les développeurs sont tôt ou tard confrontés à la nécessité d'exécuter ou de vérifier rapidement du code, mais tout le monde ne sait pas que pour une tâche aussi simple, il n'est pas du tout nécessaire d'exécuter des IDE de bureau lourds ou des compilateurs d'applications. Il suffit d'utiliser des outils en ligne qui vous permettent de tout faire beaucoup plus rapidement : Ctrl+C, Ctrl+V, Run, whack - et la sortie du programme est déjà sous vos yeux rougeâtres.

Nous avons sélectionné les meilleurs compilateurs en ligne : certains d'entre eux sont assez universels, d'autres sont adaptés à des tâches strictement définies. En tout cas, ils ne seront pas superflus.

Codage

Koding.com n'est pas un compilateur en ligne au sens traditionnel du terme. Chaque utilisateur du service peut créer plusieurs machines virtuelles sous Gestion d'Ubuntu 14.04, sur lequel il peut faire ce qu'il veut, y compris compiler le code. Tous langues populaires sont pris en charge par défaut, mais vous pouvez facilement ajouter les vôtres.

En plus du panneau de contrôle de votre serveur, un IDE pratique et une fenêtre de terminal sont disponibles dans l'interface. Le codage est le plus remède universel, nous examinerons ensuite des options plus simples et plus spécialisées.

IdéeOne

IdeOne est un compilateur et un outil de débogage en ligne qui vous permet d'exécuter du code dans plus de 60 langages de programmation et leurs versions spécifiques directement dans le navigateur.

Pour ceux qui n'ont pas de petite amie, les créateurs ont prévu une compilation de code dans le langage Brainfuck.

JDoodle

Un autre compilateur en ligne qui prend en charge de nombreux langages, dont certains que vous ne trouverez pas dans de nombreux autres compilateurs en ligne. Une fonctionnalité intéressante JDoodle est une possibilité collaboration- envoyez simplement un lien vers votre session en cours et générez des bugs à double vitesse !

jsFiddle

Ne vous laissez pas tromper par le nom : jsFiddle n'est pas uniquement destiné à JavaScript. Cet éditeur frontal en ligne vous permet de tester n'importe quelle combinaison de JavaScript, HTML et CSS. Bien sûr, divers frameworks sont pris en charge, par exemple jQuery, Vue, React, TypeScript, ainsi que des préprocesseurs CSS comme SCSS. Pour plus de commodité, vous pouvez sélectionner une combinaison de touches dans votre éditeur préféré. C'est vrai, seulement si votre éditeur préféré est Vim, Emacs ou Sublime Text.

CodePad

CodePad est un service minimaliste dans lequel vous pouvez stocker du code, le partager et l'exécuter avec la sortie ultérieure des résultats de son exécution. Il existe plusieurs langues les plus courantes parmi lesquelles choisir, mais malheureusement il n'y a pas de choix versions spécifiques interprètes ou compilateurs.

Son principal avantage est la simplicité et la facilité : le site fonctionnera rapidement même avec Internet lent. La connexion automatique des en-têtes standards est fournie, ainsi que l'intégration avec Vim ou Emacs.

Parmi les inconvénients on peut citer absence totale coloration syntaxique lors de la saisie du code dans le formulaire. Cependant, lors de la visualisation d'un enregistrement déjà enregistré, le rétroéclairage est présent.

GodBolt du CCG

GCC GodBolt est un compilateur C++ interactif. Je me suis lancé dans cette collection parce qu'elle possède une interface simple, ainsi que grand nombre paramètres, y compris les options qui peuvent être ajustées à l’aide des touches.

Il existe de nombreuses versions de compilateur parmi lesquelles choisir, y compris les dernières. Depuis fonctionnalités intéressantes Vous pouvez noter la traduction instantanée du code du programme en langage assembleur.



Des questions ?

Signaler une faute de frappe

Texte qui sera envoyé à nos rédacteurs :