Aller au contenu | Aller au menu | Aller à la recherche
Voici une astuce toute simple pour diminuer la taille de vos tests quand ceux-ci sont simples et répétitifs.
Admettons que vous souhaitiez vérifier que la valeur d'une variable vaux soit 2, soit 3, soit 7, soit 9. La méthode qui vient immédiatement à l'esprit est de multiplier les tests de cette manière :
if ($variable == 2 ||
$variable == 3 ||
$variable == 7 ||
$variable == 9 ) {
// ... code ...
}
Cela fait beaucoup de lignes pour un test assez simple finalement. En y regardant de plus près, on s'apercoit qu'on peut reformuler le problème ainsi : la valeur d'une variable est-elle dans l'ensemble 2, 3, 7, 9 ?. Ce qui s'écrit ainsi en PHP :
if (in_array($variable, array(2, 3, 7, 9))) {
// ... code ...
}
Le code est maintenant beaucoup plus concis et tout aussi simple à comprendre.
Mise à jour :
Suite au commentaire de michel v, j'ai effectué un petit benchmark et il s'avère effectivement que la solution avec in_array est nettement plus lente que l'autre. De plus, la différence grandie lorsque la valeur à trouver est située au début de la liste des tests.
Néanmoins, il faut relativiser car si la différence de temps d'exécution entre les 2 solutions est importante, dans l'absolu, la durée en elle même est infime et donc négligeable dans 99,99% des cas.
mercredi 23 février 2005 à 08h22 -
PHP
Aucun rétrolien pour le moment.
Les rétroliens pour ce billet sont fermés.
![]()
La m?me syntaxe est disponible sous Delphi.
JMF
le mercredi 23 février 2005 à 13h57
![]()
Plus concis, et plus lent aussi. in_array() est tr?s lent...
michel v
le mercredi 23 février 2005 à 14h55
![]()
Certe c'est plus lent (?a semble normal) mais c'est autrement plus pratique (comme bcp de fonctions php dans ce style). A ce propos, l'un de vous connaitrai un site de benchmark comparatif de vitesse de fonctions php ?
Accessoirement, il faudrai faire ce test avec un code optimis? avec MMCache ou un autre pr?-compilateur de ce genre pour voir si la diff?rence de vitesse viens bien de la fonction elle m?me ou du parsing de la condition.
SToto98
le mercredi 23 février 2005 à 19h24
![]()
SToto98>A ce propos, l'un de vous connaitrai un site de benchmark comparatif de vitesse de fonctions php ?
Je sais qu'il en existe un que j'ai d?j? consult? mais je n'arrive pas ? retrouver l'URL.
SToto98>Accessoirement, il faudrai faire ce test avec un code optimis? avec MMCache ou un autre pr?-compilateur de ce genre
Tu fais une remarque judicieuse car sans faire attention j'ai test? avec eAccelerator (le fork de Turck MMCache).
JMF
le mercredi 23 février 2005 à 20h38
![]()
Et hop, un p'tit benchmark trouv? sur le forum de developpez.net
iubito.developpez.com/php...
Ayant d?j? utilis? in_array() sur de gros tableaux (et j'avais pas le choix), je te confirme que c'est tr?s lent. Pour des tableaux avec peu d'indices, ?a va encore ... mais pour le reste, laisse tomber !
Greg
le jeudi 24 février 2005 à 10h37
![]()
il y a aussi ?a :
www.estvideo.com/dew/page...
je pense que c'est celui la que tu cherchait JM non ? :D
Ldo
le vendredi 25 février 2005 à 11h32
![]()
Ldo> En fait, je ne connaissais pas ce comparatif mais il a l'air sympa.
Celui dont je parle a environ 1 an, est en Anglais et est beaucoup plus spartiate dans sa pr?sentation.
JMF
le vendredi 25 février 2005 à 21h27
![]()
Ldo, j'ai fini par retrouver le fameux test dont je parlais : http://www.php.lt/benchmark/phpbench.php
JMF
le mardi 8 mars 2005 à 17h17
Les commentaires pour ce billet sont fermés.
© 2003-2008 Jean-Marc Fontaine - Tous droits réservés
XHTML - CSS - DotClear - Technorati
Les billets de ce blog sont sous licence Creative Commons
Fabien le mercredi 23 février 2005 à 13h54