2008/6/3 Matthieu Marcillaud <marcimat@free.fr>:
Gilles Vincent a écrit :
2008/6/3 Gilles Vincent <gilles.vincent@gmail.com mailto:[gilles.vincent@gmail.com](mailto:gilles.vincent@gmail.com)>:
D’après http://www.phpbench.com/ cette fonction est très gourmande
en temps.
L’auteur recommande de remplacer :
Oubliez ce que j’ai proposé :
Je ne m’étais pas trop posé la question. J’avais entendu que foreach était plus long effectivement. J’ai donc aussi testé quelques bench proposés (php 4.4.3 de Free -http://marcimat.free.fr/bench.php), php 5.1.2 (http://magraine.net/bench.php)(Ubuntu 6.06 Dapper Drake), php 5.2.4 (local)(Ubuntu 8.04 Gusty Gibbon)
Les tests sont assez cohérents entre php4 et php5 pour les benchs proposés par le site phpbench que j’ai utilisé (source collée ici : http://www.friendpaste.com/y2rnSyWV), mais montrent (pour mes cas) justement l’inverse, à savoir que Foreach est plus rapide que le While-list-each !!!
C’est étonnant, car j’ai utilisé le même code qu’eux !
En fait moi c’est pareil :
voici ce que ça donne
→ sur Dedibox (sous Fedora / PHP5) :
http://tech-nova.fr/test/phpbench.php
→ sur OVH 270Plan :
http://www.grimedif.com/phpbench.php (PHP4)
→ sur infomaniak.ch : (PHP5)
http://pressesuisse.ch/phpbench.php
→ sur Free :
http://hce.free.fr/phpbench.php (PHP4)
Pour les PHP4, le test sur les for…loop ne fonctionne pas (il faut désactiver le test 3).
En tout cas il y a de grosses différences selon les hébergeurs (entre Free et infomaniak il y a une rapport de 10 
Sous PHP4 je note que
array_keys($aHash); array_values($aHash);
est plus rapide que tout.
Ce n’est pas le cas sous PHP5 (loin de là).
Sinon les tests sont peut-être aussi discutables car pour les foreach() par ex. il n’y a pas d’affectation de variable / traitement comme « dans la vrai vie ».
Je n’ai pas trop d’idée là dessus.
Et vous, quel est le bench de votre hébergeur ?
Je suis curieux de voir ce que ça donne chez 1&1, Gandi, Amen, etc…
.Gilles