Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2716 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2  3  4  5
Auteur Sujet :

while + foreach pas compatible ?! (2 TT, vivent les topics web)

n°1367758
FlorentG
Posté le 16-05-2006 à 16:14:01  profilanswer
 

Reprise du message précédent :
Maintenant, en conditions réelles, on utilisera plutôt f2 : La couche DB récupère le résultat et retourne un tableau, sinon on se retrouve avec des instructions mysql dans la présentation [:johneh]

mood
Publicité
Posté le 16-05-2006 à 16:14:01  profilanswer
 

n°1367762
Sh@rdar
Ex-PhPéteur
Posté le 16-05-2006 à 16:17:21  profilanswer
 

smaragdus a écrit :

oui qq ms qui font que la 2ième boucle est 7 fois plus rapide [:ddr555]
Quand tu developperas des sites pros, tu comprendras un jour que la moindre ms est importantes


 
 
en attendant tu m'explique pour le pointeur ?  
 
(t'as quand même l'art d'éviter les questions qui gènent hein :D )
 
EDIT : et on s'en fout de mesurer qu'une partie, ça vaut rien de rien, tu pige pas ?

Message cité 1 fois
Message édité par Sh@rdar le 16-05-2006 à 16:18:23

---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
n°1367764
smaragdus
whores, drugs & J.S. Bach
Posté le 16-05-2006 à 16:18:16  profilanswer
 

FlorentG a écrit :


f1 : 2900 ms
f2 : 3300 ms


 
Il a mis des print_r [:ddr555]
 
Un conseil : essaie avec des sleep(10000) à chaque boucle tu verras qu'il y a encore moins de différence :lol:

n°1367766
smaragdus
whores, drugs & J.S. Bach
Posté le 16-05-2006 à 16:18:52  profilanswer
 

skeye a écrit :

Bon sinon moi je veux bien voir les résultats de smaragdus
1) En fonction de la taille de la table.
2) En séparant les 2 méthodes dans 2 scripts distincts.
 
[:doc petrus]


 
C'est ce que j'ai un peu plus haut  :pfff:  

n°1367768
smaragdus
whores, drugs & J.S. Bach
Posté le 16-05-2006 à 16:20:16  profilanswer
 

Sh@rdar a écrit :

en attendant tu m'explique pour le pointeur ?  
 
(t'as quand même l'art d'éviter les questions qui gènent hein :D )


 
Rapport avec la choucroute : nul
 
Au fait t'as toujours pas expliqué pourquoi ta base données est plus rapide que la mémoire ? T'as des cartes perforées ? :lol:

n°1367769
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 16-05-2006 à 16:20:19  profilanswer
 

smaragdus a écrit :

Il a mis des print_r [:ddr555]
 
Un conseil : essaie avec des sleep(10000) à chaque boucle tu verras qu'il y a encore moins de différence :lol:


T'as oublié "gros incompétent de merde" à la fin de ta phrase ;) ;) ;)


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°1367774
Sh@rdar
Ex-PhPéteur
Posté le 16-05-2006 à 16:22:23  profilanswer
 

smaragdus a écrit :

Il a mis des print_r [:ddr555]
 
Un conseil : essaie avec des sleep(10000) à chaque boucle tu verras qu'il y a encore moins de différence :lol:


 
 
et sans affichage mais avec 10, 100 et 1000 lignes ?
 
chez moi  
 

Code :
  1. $start = microtime();
  2. while ($val = mysql_fetch_row($Query)) {
  3. $Results[] = $val;
  4. }
  5. mysql_close($Connect);
  6. foreach ($Results AS $val) {
  7. }
  8. $end = microtime();


 
reste plus lent que
 

Code :
  1. $start = microtime();
  2. while ($val = mysql_fetch_row($Query)) {
  3. }
  4. mysql_close($Connect);
  5. mysql_data_seek($Query,0);
  6. while ($val = mysql_fetch_row($Query)) {
  7. }
  8. $end = microtime();


 
pourtant, aucun affichage rien, comment t'explique ça :??:


Message édité par Sh@rdar le 16-05-2006 à 16:25:36

---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
n°1367777
Djebel1
Nul professionnel
Posté le 16-05-2006 à 16:22:55  profilanswer
 

>djebel qui prend le train en route
C'est pas parce que je débite pas 50 insultes par pages que j'ai pas suivi.
Le test de FlorentG montre bien que tu es bien trop sûr de toi, et quand bien même tu aurais raison ça te permets pas de faire le connard.
(jle mets en gras hein avant que tu te mettes à contester tout ça tout ça).
 
Ca me fait penser à ces prestataires qui débarquent dans des boîtes en croyant tout savoir de la vie, et en te traitant comme le dernier des connards parce que ton code est pas optimal, alors que ce n'est pas le tien, ou alors c'est une consigne de ton con de patron, etc ...

Message cité 1 fois
Message édité par Djebel1 le 16-05-2006 à 16:24:39
n°1367778
cinocks
Posté le 16-05-2006 à 16:23:06  profilanswer
 

smaragdus a écrit :

:lol: Anthologique, celle là
 

Citation :

$result = mysql_query("select * from abonnementsiteinternaute", $cac);
$t[0] = microtime();
while ($obj = mysql_fetch_object($result));
$t[1] = microtime();  
mysql_data_seek($result, 0);
while ($obj = mysql_fetch_object($result));
$t[2] = microtime();  
mysql_data_seek($result, 0);
while ($obj = mysql_fetch_object($result))
 $tab2[] = $obj;  
$t[3] = microtime();
foreach($tab2 as $pk => $obj)
 $tab3[] = $obj;
$t[4] = microtime();
 
?>
 
delta1 = <?php echo ($t[1]-$t[0]) ?><br />  
delta2 = <?php echo ($t[2]-$t[1]) ?><br />  
delta3 = <?php echo ($t[3]-$t[2]) ?><br />  
delta4 = <?php echo ($t[4]-$t[3]) ?><br />


 
delta1 = 0.017028
delta2 = 0.017603
delta3 = 0.020106 : avec l'affectation
delta4 = 0.002808 : en utilisant le tableau au lieu de parcourir les enreg avec mysql_fetch

 


 
Euh là je lis recuperation du recordset + affectation dans un tableau + parcours du tableau donne 0.020106+0.002808=0.022914
Ce qui donne plus que le parcours du while uniquement :??:


---------------
MZP est de retour
n°1367781
Sh@rdar
Ex-PhPéteur
Posté le 16-05-2006 à 16:23:22  profilanswer
 

smaragdus a écrit :

Rapport avec la choucroute : nul
 
Au fait t'as toujours pas expliqué pourquoi ta base données est plus rapide que la mémoire ? T'as des cartes perforées ? :lol:


 
 
tu parle de base, pourtant mon second fetching je le fais déconnecté, donc je répète, de où sortent ces résultats ? (DTC proof)


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
mood
Publicité
Posté le 16-05-2006 à 16:23:22  profilanswer
 

n°1367784
smaragdus
whores, drugs & J.S. Bach
Posté le 16-05-2006 à 16:23:48  profilanswer
 

Taiche a écrit :

T'as oublié "gros incompétent de merde" à la fin de ta phrase ;) ;) ;)


 
spa le genre de la maison, je laisse ça à masklinn  

n°1367785
smaragdus
whores, drugs & J.S. Bach
Posté le 16-05-2006 à 16:24:31  profilanswer
 

Djebel1 a écrit :

>djebel qui prend le train en route
C'est pas parce que je débite pas 50 insultes par pages que j'ai pas suivi.
Le test de FlorentG montre bien que tu es bien trop sûr de toi, et quand bien même tu aurais raison ça te permets pas de faire le connard.


 
Je quote l'insulte et attends ta sanction avec joie  [:catharsis]  

n°1367787
Djebel1
Nul professionnel
Posté le 16-05-2006 à 16:25:38  profilanswer
 

si faut être banni pour te dire que tu tapes sur le système de tout le monde, et que tu pourrais dire la même chose sans faire ton kéké, np

n°1367790
cinocks
Posté le 16-05-2006 à 16:27:39  profilanswer
 

smaragdus a écrit :

t'as pas compris ma métaphore du poussin ?


 
La metaphore n'est pas bonne. Si le camion reste le meme et que la balance est precise peu importe le poids que l'on rajoute à celui des poussins, le delta restera le même. :o


---------------
MZP est de retour
n°1367791
FlorentG
Posté le 16-05-2006 à 16:27:42  profilanswer
 

smaragdus a écrit :

Au fait t'as toujours pas expliqué pourquoi ta base données est plus rapide que la mémoire ? T'as des cartes perforées ? :lol:


Pourquoi ? Parce qu'il y en a un qui utilise un fonction de l'API (donc en C), et l'autre qui est basée à 100% sur PHP (donc interprété et full ramage). Sans parler de l'initialisation du tableau de rows, qui lui aussi prend beaucoup de temps dans le second cas. Vaut mieux réutiliser la mémoire (double mysql_truc) que de se taper un tableau complet à remplir.

n°1367792
skeye
Posté le 16-05-2006 à 16:29:38  profilanswer
 

cinocks a écrit :

La metaphore n'est pas bonne. Si le camion reste le meme et que la balance est precise peu importe le poids que l'on rajoute à celui des poussins, le delta restera le même. :o


oui, mais il paraitra ridicule.[:joce]


---------------
Can't buy what I want because it's free -
n°1367795
smaragdus
whores, drugs & J.S. Bach
Posté le 16-05-2006 à 16:29:58  profilanswer
 

Djebel1 a écrit :

si faut être banni pour te dire que tu tapes sur le système de tout le monde, et que tu pourrais dire la même chose sans faire ton kéké, np


 
Tout ça parce que j'ai raison [:spamafote]

n°1367797
Sh@rdar
Ex-PhPéteur
Posté le 16-05-2006 à 16:30:08  profilanswer
 

cinocks a écrit :

La metaphore n'est pas bonne. Si le camion reste le meme et que la balance est precise peu importe le poids que l'on rajoute à celui des poussins, le delta restera le même. :o


 
bin ouais, ce qui fait que je vois pas pourquoi un affichage ou autre chose changerait le temps d'écart [:spamafote]


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
n°1367798
smaragdus
whores, drugs & J.S. Bach
Posté le 16-05-2006 à 16:31:09  profilanswer
 

cinocks a écrit :

La metaphore n'est pas bonne. Si le camion reste le meme et que la balance est precise peu importe le poids que l'on rajoute à celui des poussins, le delta restera le même. :o


oui mais le rapport sera proche de 1, donc forcément ça semble minimiser l'effet  :o

n°1367803
cinocks
Posté le 16-05-2006 à 16:33:50  profilanswer
 

si en quelque sorte ca va changer, c'est qui si tu pesais les 2 poussins dans 2 camions differents, même modele mais differents. On est pas sur qu'ils fassent (camions) précisement le même poids. Tout comme tes echo n'ont pas tous la mm durée d'execution.
 
Ceci dit je ne vois pas l'interet de faire un while des resultats pour les affecter dans un tableau, puis de lire ce tableau plus tard. A moins d'en avoir besoin plusieurs fois dans l'execution du script ca ne sert à rien. C'est pourquoi je n'arrive pas à comprendre la mesure d'un foreach seul.  Sans l'alimentation du tableau il ne fera rien :??:


---------------
MZP est de retour
n°1367804
FlorentG
Posté le 16-05-2006 à 16:35:12  profilanswer
 

cinocks a écrit :

Ceci dit je ne vois pas l'interet de faire un while des resultats pour les affecter dans un tableau, puis de lire ce tableau plus tard.


Parce qu'en pratique, si ton application est bien torchée, tu as un minimum d'abstraction vis-à-vis de la source de données. Hors de question de mettre des mysql_fetch_row lors de l'affichage par exemple.

n°1367805
Djebel1
Nul professionnel
Posté le 16-05-2006 à 16:35:15  profilanswer
 

>Tout ça parce que j'ai raison
 
- le fait que tu aies raison n'apparait clair qu'à toi seul.
- que tu aies raison ne me dérange en rien
 
Dans le test de florentG, y a pas de rapport, il a mis des print_r aux deux tests, il n'y a donc aucune différence entre les deux méthodes due à ce print_r.

n°1367806
cinocks
Posté le 16-05-2006 à 16:35:22  profilanswer
 

smaragdus a écrit :

oui mais le rapport sera proche de 1, donc forcément ça semble minimiser l'effet  :o


Encore faut-il que le protocole de mesure soit bon.


---------------
MZP est de retour
n°1367810
masklinn
í dag viðrar vel til loftárása
Posté le 16-05-2006 à 16:36:27  profilanswer
 

smaragdus a écrit :

oui qq ms qui font que la 2ième boucle est 7 fois plus rapide [:ddr555]
Quand tu developperas des sites pros, tu comprendras un jour que la moindre ms est importantes


Regarde le test de florentg juste au dessus de ton post ;)

FlorentG a écrit :

Maintenant, en conditions réelles, on utilisera plutôt f2 : La couche DB récupère le résultat et retourne un tableau, sinon on se retrouve avec des instructions mysql dans la présentation [:johneh]


Ouais mais sur le fond smaragdus a quand même tord [:spamafote]  
 
(Et on peut être propre en wrappant l'appel DB dans un itérateur, comme ça on a jamais d'instruction mysql dans la view et on a pas non plus à créer un tableau complet :o)


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°1367811
cinocks
Posté le 16-05-2006 à 16:36:59  profilanswer
 

FlorentG a écrit :

Parce qu'en pratique, si ton application est bien torchée, tu as un minimum d'abstraction vis-à-vis de la source de données. Hors de question de mettre des mysql_fetch_row lors de l'affichage par exemple.


Je suis d'accord, je ne dis pas le contraire. Mais ce n'est pas plus rapide comme methode. Le temps du foreach s'additionne obligatoirement à celui du while. Quelque soit la methode, il faut bien extraire les données du recordset.
 
Je precise que je parle du bench.

Message cité 1 fois
Message édité par cinocks le 16-05-2006 à 16:38:09

---------------
MZP est de retour
n°1367814
FlorentG
Posté le 16-05-2006 à 16:38:32  profilanswer
 

smaragdus a écrit :

Il a mis des print_r [:ddr555]
 
Un conseil : essaie avec des sleep(10000) à chaque boucle tu verras qu'il y a encore moins de différence :lol:


Ca montrerais une chose : que les deux méthodes finalement ne valent pas grand chose par rapport à ce qu'il y a dedans. Si tu mets des sleep(10000), tu verra très peu de différence entre les deux. Conclusion : on s'en fout laquelle méthode est la plus rapide, vu que c'est le sleep(10000) qui pose problème.
 
Si on ne met rien dans les boucles, évidemment on va trouver de grosses différences en temps d'exécution. Mais dès qu'on met un peu de traitement là-dedans, bah finalement on remarque qu'on s'en fout de la méthode, ça devient à peu près similaire.
 
C'est comme ceux qui font la différence entre print et echo (je faisais partie de ceux-là, mais plus maintenant). Alors pour 10 000 itérations, on remarque que echo est plus rapide que print... Mouais, pour 10 000 itérations. Mais dès qu'on les places dans une grosse appli avec accès aux données et tout, bah c'est pas l'utilisation de print ou de echo qui fera la différence niveau perfs.

n°1367818
FlorentG
Posté le 16-05-2006 à 16:45:06  profilanswer
 

masklinn a écrit :

(Et on peut être propre en wrappant l'appel DB dans un itérateur, comme ça on a jamais d'instruction mysql dans la view et on a pas non plus à créer un tableau complet :o)


Effectivement, et tu viens d'ailleurs de me donner une idée [:dawa]
 

cinocks a écrit :

JMais ce n'est pas plus rapide comme methode. Le temps du foreach s'additionne obligatoirement à celui du while. Quelque soit la methode, il faut bien extraire les données du recordset.


Voilà :)

n°1367821
smaragdus
whores, drugs & J.S. Bach
Posté le 16-05-2006 à 16:46:36  profilanswer
 

masklinn a écrit :

Regarde le test de florentg juste au dessus de ton post ;)


bench foireux [:spamafote]
 

Citation :

Ouais mais sur le fond smaragdus a quand même tord [:spamafote]


 
tort  :D  
Et les benchs prouvent que j'ai raison

n°1367822
cinocks
Posté le 16-05-2006 à 16:47:03  profilanswer
 

Ca me rassure, je commencais à bruler tous mes codes sources pour incompetence complete. J'avais commencé a rediger ma lettre de demission. :o
 
Ouh là, je reponds à Florentg, hein!!!! :o


Message édité par cinocks le 16-05-2006 à 16:47:32

---------------
MZP est de retour
n°1367823
stiffler
Lâche mon profil putain ! :o
Posté le 16-05-2006 à 16:47:17  profilanswer
 

smaragdus a écrit :

bench foireux [:spamafote]


En quoi ils sont foireux [:dawak]
 

n°1367828
cinocks
Posté le 16-05-2006 à 16:48:05  profilanswer
 

smaragdus a écrit :

bench foireux [:spamafote]
 

Citation :

Ouais mais sur le fond smaragdus a quand même tord [:spamafote]


 
tort  :D  
Et les benchs prouvent que j'ai raison


 
Non mais serieux, tu n'as toujours pas vu ton erreur dans tes deltas de mesures :??:


---------------
MZP est de retour
n°1367829
FlorentG
Posté le 16-05-2006 à 16:48:21  profilanswer
 

smaragdus a écrit :

bench foireux [:spamafote]


Explique en quoi c'est foireux

n°1367830
smaragdus
whores, drugs & J.S. Bach
Posté le 16-05-2006 à 16:48:38  profilanswer
 

stiffler a écrit :

En quoi ils sont foireux [:dawak]


 
lis le topic plutôt que de débarquer avec tes gros sabots

n°1367831
masklinn
í dag viðrar vel til loftárása
Posté le 16-05-2006 à 16:48:49  profilanswer
 

smaragdus a écrit :

bench foireux [:spamafote]
 
Et les benchs prouvent que j'ai raison


C'est marrant, tous les benchs que tu ne fais pas sont foireux et les seuls benchs montrant que tu as raison sont les tiens [:cupra]


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°1367833
smaragdus
whores, drugs & J.S. Bach
Posté le 16-05-2006 à 16:50:49  profilanswer
 

masklinn a écrit :

C'est marrant, tous les benchs que tu ne fais pas sont foireux et les seuls benchs montrant que tu as raison sont les tiens [:cupra]


parce que j'ai raison [:spamafote]
Parce que je bench les bonnes choses (mysql_fetch) et pas des print_r ou des echo

Message cité 2 fois
Message édité par smaragdus le 16-05-2006 à 16:52:09
n°1367835
cinocks
Posté le 16-05-2006 à 16:52:11  profilanswer
 

Perso je pars du principe que seul contre un je peux supposer avoir raison, seul contre 5 pourquoi pas (je suis le meilleur). Mais seul contre tous, je commence à avoir de serieux doutes.
 
Mais peut-etre que je ne comprends pas bien l'objectif de ton test.
 
Je suis d'accord qu'il ne faut rien rajouter d'autre que le necessaire dans le bench. Mais c'est bien le seul point où je suis d'accord.


Message édité par cinocks le 16-05-2006 à 16:53:37

---------------
MZP est de retour
n°1367837
stiffler
Lâche mon profil putain ! :o
Posté le 16-05-2006 à 16:52:33  profilanswer
 

smaragdus a écrit :

lis le topic plutôt que de débarquer avec tes gros sabots


c'est pas parceque j'ai pas posté que je suis pas le topic [:dawa]
Donc vas-y réponds à la question(que floretg aussi t'as posé) [:dawak]

n°1367838
FlorentG
Posté le 16-05-2006 à 16:53:02  profilanswer
 

smaragdus a écrit :

parce que j'ai raison [:spamafote]


Non. Tu fais l'erreur de bencher sans traitement dedans. Ca s'appelle enculer les mouches pour gagner 0.0003 ms sur le total de l'exécution.

n°1367845
FlorentG
Posté le 16-05-2006 à 16:55:43  profilanswer
 

smaragdus a écrit :

parce que j'ai raison [:spamafote]
Parce que je bench les bonnes choses (mysql_fetch) et pas des print_r ou des echo


Premature Optimization, ça te dit quelque chose ?

n°1367852
cinocks
Posté le 16-05-2006 à 16:58:43  profilanswer
 

FlorentG a écrit :

Non. Tu fais l'erreur de bencher sans traitement dedans. Ca s'appelle enculer les mouches pour gagner 0.0003 ms sur le total de l'exécution.


 
Moi ce que je vois dans son bench c'est:
 

  • Je calcule le temps d'un parcours de recordset
  • Je calcule la meme en y rajoutant le data_seek, histoire de montrer le surplus de temps généré par le data_seek
  • je calcule l'affectation dans un tableau du recordset par un while
  • je calcule le parcours à vide de ce tableau avec un foreach


Le probleme est que 2 premiers while et le dernier foreach ne font pas la même chose. Le foreach ne recupere rien dans le recordset contrairement aux whiles. C'est comme comparer le poids d'un cochon et celui d'un moustique dans un 38 tonnes :o


---------------
MZP est de retour
n°1367859
FlorentG
Posté le 16-05-2006 à 17:03:05  profilanswer
 

cinocks a écrit :

  • Je calcule la meme en y rajoutant le data_seek, histoire de montrer le surplus de temps généré par le data_seek

L'histoire ne dit pas que mysql_data_seek ne génère strictement aucun surplus :D

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5

Aller à :
 

Sujets relatifs
while, do.....while?! :-(break pour un foreach ?
problème avec foreachForeach ArrayList
boucle while: table de multiplicationArray sur deux colonnes et foreach..
feuille css pas compatible IEJe cherche une fonction equivalente à foreach() ?
[PHP] Boucle do while() a condition multiples (résolu)(Image) Possible de rendre ca compatible IE et FF?
Plus de sujets relatifs à : while + foreach pas compatible ?! (2 TT, vivent les topics web)


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)