mageekblog - Mot-clé - for - CommentairesLe blog personnel de Frédéric Hardy. Au menu, PHP, agilité, FreeBSD, cuisine et photographies.2021-12-02T08:20:54+01:00Frédéric Hardyurn:md5:26874ca5b8cd4cac8d08b0e68e64f63aDotclearfor versus foreach - ashgenesisurn:md5:b8bcfd0f7eae9ed8c7cbc0bd8bd945942010-06-10T11:12:58+02:002010-06-10T12:20:18+02:00ashgenesis<p>@desfrenes : Le débat se situe plus dans l'utilisation des doubles quotes lorsque nous n'avons pas de variables à interpréter dans la chaine. La différence entre les deux expressions suivantes :<br />
$mouf = "Ma chaine sans variable";<br />
$mouf = 'Ma chaine sans variable';</p>for versus foreach - mageekguyurn:md5:c190a8da6451e64d84904d15bad4c9d32010-06-10T09:09:05+02:002010-06-10T08:09:59+02:00mageekguy<p>@<a href="http://blog.mageekbox.net/?post/2010/06/09/for-versus-foreach#c1611" rel="nofollow">desfrenes</a> : Il y a bien un débat sur ce sujet... malheureusement.</p>for versus foreach - desfrenesurn:md5:42eea2a435dd0c1b8dc363fa199bbd222010-06-09T21:41:52+02:002010-06-10T08:09:59+02:00desfrenes<p>"je ne parlerai pas du débat fondamental entre les utilisateurs de simple et de double quotes"</p>
<p>Ouais... enfin c'est quand même pas qu'une question de performance là !</p>
<p>mickael@enclume:~$ cat quotes.php<br />
<?php<br />
$mouf = 'Mouf';<br />
echo '\n Hello $mouf \n';<br />
echo "\n Hello $mouf \n";<br />
mickael@enclume:~$ php quotes.php<br />
\n Hello $mouf \n</p>
<pre>Hello Mouf</pre>for versus foreach - CrazyCaturn:md5:47211642af7bbb9f09332c013c8be0792010-06-09T17:43:15+02:002010-06-09T16:52:59+02:00CrazyCat<p>Très bon post permettant de démontrer l'inutilité de certains débats malheureusement trop fréquents.</p>
<p>Par contre, mauvais placement du premier commentaire qui devrait se trouver au niveau du "for ($i = 0, $end = sizeof($array); $i < $end; $i++)", il y en a qui vont se planter :D</p>for versus foreach - mageekguyurn:md5:ff1ddd0ce0ac0ec52afb7858325da8bb2010-06-09T17:41:23+02:002010-06-09T17:03:00+02:00mageekguy<p>@<a href="http://blog.mageekbox.net/?post/2010/06/09/for-versus-foreach#c1603" rel="nofollow">Un lecteur</a> : Je vais faire un effort pour l'orthographe.</p>
<p>@<a href="http://blog.mageekbox.net/?post/2010/06/09/for-versus-foreach#c1604" rel="nofollow">metagoto</a> : Utiliser bytekit ou vld pour un débat de cet importance, c'est utiliser une massue pour écraser une mouche, tellement le débat me semble à côté de la plaque,</p>
<p>Et si une application doit être tellement rapide qu'elle nécessite un tel niveau d'optimisation, il ne faut pas l'écrire en PHP, mais en C/C++, bref, un langage compilé efficace (on parle dans le cas présent de 3% d'écart sur... 0.6 seconde pour un tableau d'un million d'éléments sur un ordinateur portable de 2005).</p>
<p>Et j'ai bien conscience que l'efficacité peut varier en fonction de la taille du tableau, c'est pourquoi ce paramêtre est une variable dans mon script.</p>for versus foreach - desfrenesurn:md5:814a8e5cb61b70a4c2eb98eb539922732010-06-09T16:58:06+02:002010-06-09T16:41:11+02:00desfrenes<p>"There should be one<del> and preferably only one </del>obvious way to do it.<br />
": <a href="http://docs.python.org/tutorial/controlflow.html#for-statements" title="http://docs.python.org/tutorial/controlflow.html#for-statements" rel="nofollow">http://docs.python.org/tutorial/con...</a></p>
<p>Sinon le débat est d'autant plus "savoureux" sachant que la plupart des débutants comptent la taille du tableau à chaque itération de la boucle for <img src="/themes/default/smilies/confused.png" alt=":-/" class="smiley" /></p>for versus foreach - Gregurn:md5:c51da65322d510908ec911bcc4f61a022010-06-09T16:28:16+02:002010-06-09T16:41:11+02:00Greg<p>Ce site est toujours utile pour ce genre de débat :<br />
<a href="http://phpbench.com/" title="http://phpbench.com/" rel="nofollow">http://phpbench.com/</a></p>for versus foreach - metagotourn:md5:257c1ad5780e7648fa4a9020740b25cb2010-06-09T16:13:33+02:002010-06-09T16:41:11+02:00metagoto<p>Je n'ai pas testé ton code.</p>
<p>Je sais par contre qu'il faut faire un pre inc au lieu d'un post inc (dans le for et en général dès qu'on le peut) car php ne sait pas optimiser ça. Chaque post inc entraine une var temporaire qui est détruite dans la foulée.</p>
<p>Pour des ranges plus faibles que les tiens, du genre 1..1000, alors le for peut l'emporter si les opérations ne sont pas trop complexes. Après c'est un match entre la VM vs. ce qui peut être codé "en dur" en C. C'est d'ailleurs une des raisons pour privilégier les fonctions "toutes faites" de php (du genre foreach) plutôt que de se tapper le boulot manuellement.</p>
<p>Dans un code qui devrait vraiment être optimisé à mort, alors des micro benches pour choisir foreach ou for (ou goto;) me sembleraient nécessaires. On ne peut pas décréter que foreach est toujours plus performant que for.</p>
<p>Un petit output avec bytekit ou vld n'aurait pas été de trop <img src="/themes/default/smilies/wink.png" alt=";)" class="smiley" /></p>for versus foreach - Un lecteururn:md5:405a6c5b91cdc2c4d2823875ebf706162010-06-09T15:25:45+02:002010-06-09T16:41:11+02:00Un lecteur<p>Hors contexte, la question ne manque pas forcément de pertinence.</p>
<p>Dans l'absolu on peut vouloir rechercher la performance optimale à tout prix pour un besoin particulier. Cependant, cette recherche de performance me semble contradictoire avec les cas d'utilisation usuels de php (web essentiellement, scripting parfois).</p>
<p>Maintenant je suis d'accord sur le fait que vu l'écart de performance, c'est surtout les avantages fonctionnels qui doivent primer. Donc +1 pour le foreach <img src="/themes/default/smilies/smile.png" alt=":)" class="smiley" /></p>
<p>HS: je prends beaucoup de plaisir à vous lire mais je trouve qu'il y a vraiment beaucoup de fautes dans le texte et c'est bien dommage au regard de la pertinence de votre blog. Désolé, ça me tient à coeur :p</p>for versus foreach - Moufurn:md5:a57cae546b512c299c0177d2ae440b772010-06-09T15:10:02+02:002010-06-09T16:41:11+02:00Mouf<p>Amen pour la conclusion!</p>
<p>Et je ne parlerai pas du débat fondamental entre les utilisateurs de simple et de double quotes.<br />
Si seulement les "référents techniques" se focalisaient plus sur les vraies bonnes pratiques (architecture, modèle de données, création d'index...) plutôt que sur l'indentation et comment faire une boucle!</p>