Pass-by-Reference et performances en PHP : mythe démystifié
En PHP, passer des paramètres de fonction par référence a fait l'objet de débats , certains spéculant que cela pourrait affecter les performances. Bien que l'utilisation de références permette aux fonctions de modifier des variables en dehors de leur portée, cela n'améliore pas nécessairement la vitesse.
Mécanisme de copie en écriture
PHP utilise un "mécanisme de copie en écriture" mécanisme pour minimiser les copies d’objets et de tableaux. Ce n'est que lorsque ces objets sont modifiés qu'ils sont copiés. Par conséquent, pour les fonctions qui utilisent simplement des paramètres sans apporter de modifications, le comportement s'apparente à un passage par référence.
Analyse des performances
Pour clarifier les idées fausses, des tests de performances ont été effectué avec une fonction qui lit ou modifie un paramètre de chaîne de 20 Ko. Les résultats ont été surprenants :
Fonction Lecture/Utilisation du paramètre :
Fonction écriture/modification du paramètre :
Inférences
Les tests révèlent que le passage par valeur est systématiquement plus rapide que le passage par référence, à la fois pour la lecture et la modification paramètres. Cela suggère que le mécanisme de copie lors de l'écriture de PHP n'est pas contourné ou optimisé pour le passage par référence.
Conclusion
Contrairement à la croyance populaire, l'utilisation du passage par référence la référence en PHP n’améliore pas les performances. Pour les fonctions qui ne modifient pas les valeurs des paramètres, la copie est négligeable. Cependant, si des modifications de paramètres sont nécessaires, le passage par référence et le passage par valeur ont des caractéristiques de performances presque identiques. Par conséquent, il est crucial d'utiliser le passage par référence uniquement lors de la modification de variables en dehors de la portée de la fonction, comme cela était initialement prévu.
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!