1 votes

Est-il préférable d'éliminer les variables supplémentaires si possible en PHP ?

Je sais que beaucoup vont appeler cela de la micro-optimisation, oui c'est ça mais c'est aussi bon de savoir des choses comme ça. Maintenant ma question, dans mon premier exemple ci-dessous, vous verrez que j'ai une variable définie qui contient une requête mysql puis j'ai une autre ligne qui exécute une fonction avec la requête mysql ci-dessus. Dans mon deuxième exemple, je fais tout en une seule ligne, je suppose qu'il n'y a pas vraiment de gain de vitesse mais peut-être que cela aiderait à réduire l'utilisation de la mémoire?

//exemple 1
$sql= 'UPDATE users SET setting_online=0 WHERE user_id=' .$_SESSION['user_id']; 
Database::executeQuery($sql);

//exemple 2
Database::executeQuery('UPDATE users SET setting_online=0 WHERE user_id=' .$_SESSION['user_id']);

3voto

Michael Borgwardt Points 181658

Peut-être oui, mais ces 40 ou 50 octets n'auront jamais d'importance.

Cependant, réduire le nombre de variables est bon pour une raison entièrement différente : cela réduit la quantité d'état que vous, en tant que programmeur, devez suivre afin de suivre le programme - et cela rend votre travail plus facile et donc le code plus maintenable.

2voto

tvanfosson Points 268301

Je ferais de la lisibilité/compréhensibilité le but. Si l'utilisation de variables supplémentaires améliore la lisibilité, alors utilisez-les. Si les supprimer améliore la lisibilité, alors supprimez-les.

De plus, utilisez des requêtes paramétrées partout, même s'il n'y a pas de risque d'injection SQL. C'est simplement une bonne habitude à prendre.

0voto

Gordon Points 156415

Jetez un œil à memory_get_usage() puis faites des tests de performances et dites-nous.

Personnellement, je dirais que cela n'a pas d'impact significatif. Cependant, la requête dans votre exemple est assez longue et l'assigner à une variable avant de l'exécuter rend le code un peu plus lisible pour moi.

0voto

Upul Bandara Points 3376

Oui l'exemple 2 aidera à réduire l'utilisation de la mémoire

0voto

Doug T. Points 33360

Peu importe la chaîne résultante est stockée en mémoire. Que ce soit en tant que quelque chose passé à la fonction, ou en tant que variable, qui est ensuite passée dans la fonction.

Cela dépend largement si php stocke la chaîne deux fois une fois dans une variable appelée sql, et une deuxième fois lorsqu'elle est passée par valeur. Étant donné que php (plus précisément le moteur Zend) utilise "copie sur écriture", la chaîne ne sera pas stockée deux fois. Elle ne sera copiée que lorsque la chaîne sera modifiée.

La seule mémoire supplémentaire que vous utiliserez dans le premier exemple est une référence supplémentaire vers cette copie. C'est un ajout minimal en mémoire, donc oui le premier exemple utilisera peut-être quelques mots de 32 bits supplémentaires. C'est négligeable au point que si cela importait, vous ne devriez probablement pas développer en php. Beaucoup de choses échappent à votre contrôle en termes d'utilisation de la mémoire, et si quelques mots de 32 bits ont de l'importance, vous devriez probablement écrire votre code en C :).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X