Maison  >  Article  >  développement back-end  >  Programmation efficace : introduction aux directives d'optimisation PHP

Programmation efficace : introduction aux directives d'optimisation PHP

不言
不言avant
2018-10-25 17:00:252432parcourir

Ce que cet article vous apporte concerne la programmation à haute efficacité : les directives d'optimisation PHP, qui ont une certaine valeur de référence, peuvent s'y référer. J'espère que cela vous sera utile.

  • Utiliser moins d'expressions régulières

str_replace  la fonction est beaucoup plus rapide que preg_replace , strtr Fonction est plus rapide que str_replace .

strpbrk()、strncasecmp()、strpos()、strrpos()、stripos()、strripos()。
  • Remplacement de caractères

Le remplacement de caractères str_replace est plus rapide que le remplacement régulier preg_replace, mais strtr est plus rapide que str_replace 1/4.

De plus, ne faites pas de substitutions inutiles, str_replace allouera de la mémoire pour ses paramètres même s'il n'y a pas de substitution. Très lent !

Utilisez strpos pour rechercher d'abord (très rapidement) pour voir s'il doit être remplacé, et si c'est le cas, remplacez-le.

Si un remplacement est nécessaire, l'efficacité est presque la même, la différence est d'environ 0,1 %.

Si aucun remplacement n'est nécessaire : utilisez le strpos 200 % plus rapidement.

  • Utilisez la variable $_SERVER

Si vous avez besoin d'obtenir le temps d'exécution du script, $_SERVER['REQUSET_TIME'] est meilleur que time().

L'un est prêt à l'emploi et peut être utilisé directement, et l'autre nécessite le résultat de la fonction.

  • Utilisez ++$i pour incrémenter

lors de l'exécution de l'incrémentation de la variable $i ou En diminuant, $i++ sera plus lent que ++$i.

Cette différence est spécifique à PHP et ne s'applique pas aux autres langages, alors ne modifiez pas votre code C ou Java et attendez-vous à ce qu'il soit instantanément plus rapide, cela ne fonctionnera pas.

++$i est plus rapide car il ne nécessite que 3 instructions (opcodes), tandis que $i++ nécessite 4 instructions.

  • Compresser les grandes chaînes

Utilisez gzcompress() et gzuncompress() pour compresser les grandes chaînes Compressez et décompressez, puis stocker et récupérer la base de données .

Cette fonction intégrée utilise l'algorithme gzip pour compresser les chaînes 90%.

  • Lire le contenu du fichier

Vous pouvez utiliser file_get_contents() au lieu de file(), fopen(), , feof() et d'autres séries de méthodes, essayez d'utiliser fgets(). file_get_contents()

  • sortie d'écho

la chaîne d'écho utilise une

virgule au lieu d'un connecteur point pour le rendre plus rapide .

Bien que

soit une construction de langage, pas une vraie fonction. echo

Cependant, il peut transmettre plusieurs chaînes séparées par des virgules comme paramètres de "fonction", ce sera donc plus rapide.

f58b6f79b3cadc84a2e0b9810ea6dd99Cela peut empêcher PHP d'ajouter accidentellement des espaces ou des nouvelles lignes après la balise de fin, ce qui entraînerait PHP à commencer à afficher ces espaces, et il n'est pas prévu de les afficher dans le script pour le moment.

  • Ne jamais utiliser et register_globalsmagic quotes

Ce sont deux fonctions très anciennes, dans Cela pourrait avoir C'était une bonne approche à l'époque (il y a dix ans), mais cela ne semble plus être le cas aujourd'hui.

Les anciennes versions de PHP activeront ces deux fonctionnalités par défaut une fois installées, ce qui peut provoquer des failles de sécurité, des erreurs de programmation et d'autres problèmes.

Par exemple, les variables ne seront créées que lorsque l'utilisateur saisira des données, etc.

Ces deux fonctionnalités ont été abandonnées depuis PHP 5.4.0, chaque programmeur devrait donc éviter de les utiliser.

Si vos programmes antérieurs ont utilisé ces deux fonctions, supprimez-les au plus vite.

  • Utiliser des chemins absolus

Essayez d'utiliser des chemins absolus dans

et include. require

S'il contient un chemin relatif, PHP parcourra pour trouver le fichier dans

. L’utilisation de chemins absolus évitera de tels problèmes et prendra moins de temps pour résoudre le chemin. include_path

Essayez de ne pas utiliser require_once et include_once pour inclure des fichiers. Ils ont un processus supplémentaire pour déterminer si le fichier est référencé. Essayez de ne pas l'utiliser si possible.

est remplacé par les méthodes require et include.

  • Les fonctions sont plus rapides que les méthodes de classe

L'appel d'une fonction avec un seul paramètre et un corps de fonction vide coûte du temps est égal à 7-8 fois $localvar++ opérations.

La méthode de classe avec la même fonction nécessite environ 15 $localvar++ opérations.

  • Utiliser les méthodes de sous-classe

Mettez uniquement les méthodes réutilisables dans la classe de base, essayez de mettre d'autres fonctions dans la sous-classe Implémentée dans une classe, les performances de la méthode dans la sous-classe sont meilleures que celles de la classe de base.

  • Passer les paramètres par référence

Utiliser la référence d'adresse de paramètre pour obtenir plusieurs valeurs de retour de la fonction, ce qui est préférable à la transmission de paramètres par référence. Le transfert de valeur est efficace. La méthode consiste à ajouter & avant la variable paramètre.

  • Rendez-la aussi statique que possible

Si une méthode peut être statique, déclarez-la comme statique, la vitesse peut être amélioré 1/4, même lorsque j'ai testé, cela s'est amélioré de près de trois fois.

La principale différence d'efficacité entre les méthodes statiques et non statiques est la mémoire. Les méthodes statiques génèrent de la mémoire au démarrage du programme et les méthodes d'instance (méthodes non statiques) génèrent de la mémoire pendant l'exécution du programme.

Ainsi, les méthodes statiques peuvent être appelées directement, tandis que les méthodes d'instance doivent d'abord créer une instance puis les appeler. Les méthodes statiques sont très rapides, mais trop de méthodes occuperont de la mémoire . .

Tout langage fonctionne sur la mémoire et le disque. Quant à savoir s'il est orienté objet ou non, c'est juste une question de couche logicielle. La couche inférieure est la même, mais la méthode d'implémentation est différente.

La mémoire statique est continue car elle est générée au début du programme, tandis que les méthodes d'instance s'appliquent à l'espace discret, donc bien sûr, elle n'est pas aussi rapide que les méthodes statiques.

Les méthodes statiques appellent toujours la même mémoire. L'inconvénient est qu'elles ne peuvent pas être détruites automatiquement, mais l'instanciation peut être détruite.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer