Maison > développement back-end > tutoriel php > compétences en optimisation php

compétences en optimisation php

墨辰丷
Libérer: 2023-03-30 11:28:02
original
1883 Les gens l'ont consulté

Cet article présente principalement les compétences d'optimisation PHP. Les amis intéressés peuvent s'y référer. J'espère qu'il sera utile à tout le monde.

Lorsque les programmeurs écrivent des programmes, ils veulent toujours que leurs programmes consomment le moins de ressources, s'exécutent plus rapidement et contiennent moins de code. Souvent, nous perdons beaucoup de choses en les poursuivant. Le but de l’optimisation est de dépenser le moins de coûts en échange de la vitesse d’exécution la plus rapide et du code le plus simple à maintenir. Ce qui suit est un résumé de plusieurs optimisations PHP :
1. Utilisation de in_array
Évitez d'utiliser in_array() sur de grands tableaux et évitez de contenir plus de 20 éléments dans une boucle. fonction. in_array() peut être très gourmand en ressources. Pour les petits tableaux, l'impact peut être minime, mais la vérification des grands tableaux dans une boucle peut prendre plusieurs secondes. Si vous avez vraiment besoin de cette fonctionnalité, utilisez isset() pour rechercher les éléments du tableau. En fait, le nom de la clé est utilisé pour interroger la valeur de la clé. Appeler isset($array[$var]) est beaucoup plus rapide que in_array($var, array_keys($array)).

2. Nom de clé de tableau
En PHP, il est légal d'utiliser une chaîne sans guillemets simples comme nom de clé de tableau, mais nous ne voulons pas de cela - le nom de clé devrait toujours être placé entre guillemets simples pour éviter toute confusion. Notez que cela utilise une chaîne au lieu d'une variable comme nom de clé.

Par exemple :

// 不好的写法
$foo = $assoc_array[blah];
// 好的写法
$foo = $assoc_array['blah'];
// 不好的写法
$foo = $assoc_array["$var"];
// 好的写法
$foo = $assoc_array[$var];
Copier après la connexion

3. Expression de chaîne Il existe deux manières différentes de représenter une chaîne en PHP : les guillemets simples ou les guillemets doubles. La principale différence est que l'interpréteur de syntaxe effectuera une substitution de variable sur les chaînes représentées par des guillemets doubles, mais ne gérera pas les chaînes représentées par des guillemets simples. Par conséquent, vous devez toujours utiliser des guillemets simples, sauf si vous avez vraiment besoin de gérer des variables dans une chaîne. De cette manière, nous pouvons réduire les coûts d’exécution du programme, car l’interpréteur de syntaxe n’a pas besoin de traiter à chaque fois un grand nombre de chaînes sans aucune variable.
De même, si vous utilisez une variable chaîne comme argument dans un appel de fonction, vous n'avez pas besoin de mettre la variable entre guillemets. Cela obligera l’interprète grammatical à faire plus de travail que nécessaire. N'oubliez pas que presque tous les caractères d'échappement entre guillemets doubles n'ont aucun effet sur les guillemets simples. Vous devez faire attention aux règles ci-dessus, mais il est parfois approprié de faire des exceptions pour des raisons de lisibilité du code.

Par exemple :

// 不好的写法
$str = "This is a really long string with no variables for the parser to find.";
do_stuff("$str");
// 好的写法
$str = 'This is a really long string with no variables for the parser to find.';
do_stuff($str);
// 有时候单引号不是那么合适
$post_url = $phpbb_root_path . 'posting.' . $phpEx . '?mode=' . $mode . '&start=' . $start;
// 双引号有时候能让代码行更集中
$post_url = "{$phpbb_root_path}posting.$phpEx?mode=$mode&start=$start";
Copier après la connexion

4. Opérations dans la définition de la boucle S'il y a des opérations dans la partie comparaison, assurez-vous de les optimiser. Parce que cette partie fonctionnera à chaque étape de la boucle :

// 在每次循环中sizeof函数都要被调用
 for ($i = 0; $i < sizeof($post_data); $i++)
 {
  do_something();
 }
// 您可以在循环起始部分对这个不变的量赋值
 for ($i = 0, $size = sizeof($post_data); $i < $size; $i++)
 {
  do_something();
 }
Copier après la connexion

5. Jugement de branche, switchcase est meilleur que ifelse Utiliser des instructions de branche est bien mieux que d'utiliser plusieurs ifelse.

6. N'abusez pas de l'opérateur @
N'abusez pas de l'opérateur @ Cela semble très simple, mais en fait, utiliser @ est plusieurs fois moins efficace qu'autrement. en utilisant @.
N’utilisez surtout pas @ dans les boucles.

7. Comment obtenir l'heure
Plusieurs fois, nous avons l'habitude d'utiliser time() pour obtenir l'heure actuelle, mais time() est une fonction après tout. utiliser $_SERVER['REQUEST_TIME directement '] Mieux.

8. Jugement de la longueur de la chaîne
Deux méthodes d'écriture :
(1) if(strlen($str) < 5){/ * faire quelque chose */}
(2) if(isset($str[5])){ /* faire quelque chose */>

Résumé : Ce qui précède est cet article. contenu entier, j'espère qu'il sera utile à l'étude de chacun.

Recommandations associées :

Méthodes et cas d'implémentation de l'opération de transposition matricielle de tableaux bidimensionnels en PHP

Méthodes et cas de fusion de plusieurs images en une seule en PHP

Développement PHP du cas de la fonction de remboursement WeChat

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal