Maison >développement back-end >tutoriel php >Programmation efficace : introduction aux directives d'optimisation PHP
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
virgule au lieu d'un connecteur point pour le rendre plus rapide .
Bien que soit une construction de langage, pas une vraie fonction. echo
Ne jamais utiliser et register_globals
magic quotes
Utiliser des chemins absolus
et include
. require
. 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!