for vs foreach en PHP - PHP - Programmation
Marsh Posté le 27-01-2004 à 19:43:13
tout comme le while est plus rapide que le for
Fait exprès signifie souvent simplifié, pas optimisé
Marsh Posté le 27-01-2004 à 23:15:54
Ah bon le while est plus rapide ?
Marsh Posté le 27-01-2004 à 23:31:48
C'est pas flagrant et ça dépend beaucoup de la manière dont il est écrit.
Pour te donner une idée, voilà les résultats d'un bench sur un tableau de 10000 éléments (oui, quand même )
Résultat : 20000 temps d'exécution : 0.017132
Résultat : 20000 temps d'exécution : 0.022836
Résultat : 20000 temps d'exécution : 0.035938
Résultat : 20000 temps d'exécution : 0.020736
Résultat : 20000 temps d'exécution : 0.016767
C'est vraiment pas énorme entre le while et le for donc
Marsh Posté le 28-01-2004 à 09:42:02
D'où ma 2ème question : quel est l'intérêt de foreach poir les tableaux par rapport à un bon vieux
Code :
|
Marsh Posté le 28-01-2004 à 10:43:04
interet: pour les tableau associatif: array("couleur" => "rouge", "type"=>"blabla" )
Marsh Posté le 28-01-2004 à 13:38:49
Pourquoi faire compliqué quand on peut faire simple? Vu la difference de perfs minime je prefere utiliser le foreach. Je trouve ça bcp plus lisible.
Marsh Posté le 28-01-2004 à 13:41:27
impulse a écrit : Pourquoi faire compliqué quand on peut faire simple? Vu la difference de perfs minime je prefere utiliser le foreach. Je trouve ça bcp plus lisible. |
C'est ce que j'ai fait, bien que ayant fait pas mal de C, je suis assez habitué au for(i =...)
Marsh Posté le 28-01-2004 à 17:01:11
rufo a écrit : D'où ma 2ème question : quel est l'intérêt de foreach poir les tableaux par rapport à un bon vieux
|
Remarque, tant qu'à optimiser, le count devrait être hors de la boucle for
Ceci dit, c'est juste une question de simplicité et de goût
Marsh Posté le 28-01-2004 à 17:03:09
j'adore ces concours de branlette de code pour gagner 0.0000004 s
Marsh Posté le 29-01-2004 à 09:47:00
naceroth a écrit : |
oui, t'as raison, une simple erreur de ma part ; c'est ce que je fais, naturellement
Marsh Posté le 29-01-2004 à 09:48:03
simogeo a écrit : j'adore ces concours de branlette de code pour gagner 0.0000004 s |
non, c'est juste une question de curiosité. Et puis, quand y'a pleins de personnes connectés en simultanné sur ton serveur, ces optimisations peuvent s'avérer utilent
Marsh Posté le 03-02-2004 à 00:07:15
utiles
Un foreach, à l'inverse d'une boucle for, ne modifie pas le contenu du tableau qu'elle parcoure, exemple:
Code :
|
(désolé pour les erreurs de syntaxe dans le code, j'ai la flemme de vérifier )
==> le tablo est toujours avec ses valeurs d'origine, donc un foreach ne peut etre utilisé qu'en lecture car il ne travaille pas directement sur le tableau, alors qu'avec un while/for on fait ce qu'on veut.
Marsh Posté le 03-02-2004 à 01:11:44
simogeo a écrit : j'adore ces concours de branlette de code pour gagner 0.0000004 s |
en même temps, c'est instructif et c'est toujours bien de chercher à tendre vers la perfection, quelque soit le domaine.
Marsh Posté le 03-02-2004 à 16:20:16
aspegic500mg a écrit : utiles
(désolé pour les erreurs de syntaxe dans le code, j'ai la flemme de vérifier ) |
La preuve que c'est instructif : personne jusqu'à présent n'avait parlé de ça!... Et ça pourrait être une source de bug pas facile à trouver pour celui qui n'est pas au courant que foreach ne travaille qu'en lecture sur des tableaux...
Marsh Posté le 03-02-2004 à 18:15:26
rufo a écrit : |
Ben oui on travaille sur la variable "$var" et non sur le contenu du tableau, ca parait logique mais quand on connait pas il est facile de faire l'erreur
Marsh Posté le 27-01-2004 à 12:06:23
Vrai ou faux? Pour parcourir les éléments d'un tableau for est plus rapide que foreach, qui pourtant, est prévues exprès pour les tableaux...
Moi, j'ai fait un test, et c'est ce que j'ai pu constater, a priori (c'est l'impression que j'en ai eu quand j'affiche les temps d'éxécution d'une page).