PHP - Paramètres d'une fonction

Résolu/Fermé
Chat - 17 mars 2008 à 15:48
 jaamka - 18 mai 2008 à 01:10
Bonjour à tous,

Je viens de tomber sur un article d'optimisation de code php qui a soulevé une question à laquelle je n'ai pas trouvé de réponse. Le principe est :

Version 1 :

$chaine = "test";
echo 'Ceci est un '.$test;

Version 2 :

$chaine = "test";
echo "Ceci est un $test";



Il apparaît que la version 1 est plus rapide que la version 2 pour la fonction echo.

Mais qu'en est-il des autres fonctions ? Y a-t-il une différence de vitesse entre mkdir('./test'); et mkdir("./test"); par exemple (valable pour toutes les fonctions avec ce type de paramètres)


Je suis conscient que le temps gagné est minime mais comme il s'agit d'un processus inscrit dans une boucle, l'accumulation de ces gains minimes se fera quand même ressentir.

3 réponses

Bonjour

En PHP, une chaîne entre apostrophes doubles " " est analysée pour détecter la présence de noms de variable et les remplacer par leur valeur, alors qu'une chaîne entre apostrophes simples n'a pas besoin d'être analysée. Ce ne sont pas les fonctions qui sont plus ou moins rapides, c'est l'analyse des chaînes.

Tant qu'à optimiser... echo 'Ceci est un ',$test; est plus rapide que echo 'Ceci est un '.$test;
Dans le second cas , la chaîne et la variable sont sorties successivement sans traitement particulier
Dans le second cas, à cause du . php va d'abord créer une nouvelle chaîne en concaténant la chaîne et la variable, puis envoyer cette nouvelle chaîne
0
Bonjour,

Merci pour la réponse, j'en déduis donc que quel que soit le cas, une chaîne entre simple quotes est traitée plus rapidement qu'une chaîne entre double quotes.

J'avais vu aussi la petite différence entre la virgule et le point pour la fonction echo, je n'en ai pas parlé car la question portait plus sur l'ensemble des fonctions (exemple mkdir('truc/'.$test) est mieux que mkdir("truc/$test"))


Je mets en résolu, merci encore ^^
0
kij_82
Messages postés
4088
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
856
17 mars 2008 à 17:01
Pour te répondre d'après mon expérience je dirais qu'il n'y a aucune différence de temps entre :
mkdir('toto'); et mkdir("toto");

Par contre dans l'exemple concernant le echo, là je suis d'accord qu'il peut y avoir une différence. Pourquoi ? Certainement parce que l'algo de recherche des variables à remplacer devient plus long dans l'exemple 2 que le 1 (il faut regarder / remplacer à l'intérieur même des chaines à afficher, et pas dans le premier exemple).
0
s es gentil mais j ai pas tout compris
0