BT

PHP Haute Performance avec du Typage Statique

par Jonathan Allen , traduit par Dridi Boukelmoune le 02 déc. 2013 |

PHP+QB est une machine virtuelle alternative pour PHP qui revendique des gains de performance d'un ordre de grandeur supérieur. Le revers de la médaille est qu'elle nécessite que tout soit typé statiquement, et des limitations sévères sont imposées aux tableaux.

Les déclarations de types statiques sont ajoutées via une extension de la syntaxe PHPDoc. Les méthodes sont annotées avec “@engine qb” pour indiquer qu'elles devraient être exécutées sur la VM PHP+QB. Ensuite il faut annoter du type de retour, les paramètres, et les variables globales avec la syntaxe PHPDoc normale. Les variables locales sont déclarées avec @local.

Les tableaux dans PHP+QB ne sont pas comme les tableaux PHP normaux. Extrait de la documentation:

Les tableaux en PHP sont des conteneurs de données sophistiqués. On peut mettre n'importe quoi dedans. Les éléments peuvent être référencés par du texte ou un nombre. Différents éléments pourraient en fait être le même objet. Un tableau peut même se contenir lui-même. Des structures très compliquées et utiles peuvent être construites à partir de tableaux PHP. Ce pouvoir et cette flexibilité ne sont cependant pas gratuits. Le sur-coût en termes de performances et de consommation de mémoire pourrait devenir insupportablement élevé lorsque l'on travaille avec des millions d'éléments.

Les tableaux PHP+QB sont extrêmement simples en comparaison. Ils sont ce qu'on appelle communément des C-arrays. Fondamentalement, un tableau en PHP+QB n'est qu'un blob en mémoire. Ses éléments sont simplement stockés les uns après les autres. On ne peut accéder aux éléments que par un indice numérique. L'ordre d'insertion n'a pas non-plus d'importance en PHP+QB, contrairement à du PHP ordinaire. $array[0] viendra toujours avant $array[1] dans une boucle foreach en PHP+QB.

Les tableaux PHP+QB sont de taille fixe ou expansible. Les tableaux expansibles ne se réduisent pas automatiquement lorsque des éléments sont retirés, pour ça il faut appeler unset().

Le moteur supporte toute la palette de types entiers signés ou non-signés ainsi que les nombres réels 32 et 64 bits. Les chaînes de caractères sont représentées par un tableau d'entiers. Les objets ne sont pas supportés, bien que les méthodes annotées pour PHP+QB auront toujours accès aux attributs de la variable $this.

Bonjour étranger!

Vous devez créer un compte InfoQ ou cliquez sur pour déposer des commentaires. Mais il y a bien d'autres avantages à s'enregistrer.

Tirez le meilleur d'InfoQ

Donnez-nous votre avis

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet
Commentaires de la Communauté

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet

Discuter

Contenu Éducatif

Rien ne serait possible sans le soutien et la confiance de nos Sponsors Fondateurs:

AppDynamics   CloudBees   Microsoft   Zenika
Feedback Général
Bugs
Publicité
Éditorial
InfoQ.com et tous les contenus sont copyright © 2006-2013 C4Media Inc. InfoQ.com est hébergé chez Contegix, le meilleur ISP avec lequel nous ayons travaillé.
Politique de confidentialité
BT