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

 


 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  360  361  362  ..  486  487  488  489  490  491
Auteur Sujet :

les développeurs de forums, les 3/4 des forums sont down /o\

n°1361705
anthomicro
Posté le 08-05-2006 à 14:14:12  profilanswer
 

Reprise du message précédent :

chaced a écrit :

Dans ta super fonction je suis sur que le preg_match est devant en perf  :lol:


 
C'est fort possible  :lol:

mood
Publicité
Posté le 08-05-2006 à 14:14:12  profilanswer
 

n°1361706
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 08-05-2006 à 14:16:42  profilanswer
 

Anthomicro => C'est quelle version de PHP pour ton article sur l'optimisation ?
Parce que perso, je bosse sur un projet en cours et quand il s'agit de parcourir un grand tableau, en remplaçant "foreach ($tab AS $key => $val)' par 'for ($i=0;$i<count($tab);$i++)', j'ai divisé mes temps de génération par 5 sur ce projet précis.
Avant j'utilisais foreach, désormais c'est fini, j'ai compris ma douleur, d'où mon étonnement sur ton bench.

n°1361713
anthomicro
Posté le 08-05-2006 à 14:20:25  profilanswer
 

Je compare le while(list()) et le foreach() pas le for($i=0;....)
 
mais je n'ai pas testé ça, je testerai car c'est intéressant, surtout pour ma page d'accueil du forum vu que j'utilise un big tableau pour gérer les cat/sous cat (tableau que j'analyse ensuite pour transformer tout ça en HTML).

n°1361719
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 08-05-2006 à 14:25:05  profilanswer
 

anthomicro a écrit :

Je compare le while(list()) et le foreach() pas le for($i=0;....)


Oui, j'ai vu, mais comme en théorie, le while est cencé être encore plus rapide que le for, ça m'a étonner encore plus. :D

n°1361721
belgique
Posté le 08-05-2006 à 14:27:25  profilanswer
 

Et le list(), c'est du poulet? :o

n°1361722
anthomicro
Posté le 08-05-2006 à 14:27:42  profilanswer
 

voilà, la lenteur vient du list ;)

n°1361727
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 08-05-2006 à 14:30:42  profilanswer
 

anthomicro a écrit :

voilà, la lenteur vient du list ;)


Donc la conclusion de ton bench n'est pas valable.  :o  
 
Je dis ça car un newb qui tomberait sur ton site en cherchant à optimiser ses scripts, genre moi, de suite il va en conclure que le foreach est mieux que le while.
 
ça mérite un edit du bench.  :o  

n°1361729
anthomicro
Posté le 08-05-2006 à 14:31:44  profilanswer
 

bah non justement, le foreach est mieux que le while(list()) étant donné qu'il est plus rapide :)
 
je vois pas où le bench n'est pas valable ;)

n°1361735
Profil sup​primé
Posté le 08-05-2006 à 14:35:16  answer
 

Que pensez vous de ce code pour génerer une image et sécuriser ses formulaires ?
http://www.gregserveur.com/forum/viewtopic.php?id=95
 
PS : Je suis consicent que l'image est lisible par un robot mais bon, c'est quand même rare...

n°1361737
anthomicro
Posté le 08-05-2006 à 14:36:34  profilanswer
 

<? devrait être remplacé par <?php pour la portabilité.
 
Sinon j'en ai fait un aussi :
 
http://www.codes-php.net/source-5- [...] ssives.php
 
avec déplacement et couleur + taille pseudo aléatoires des caractères ;)

mood
Publicité
Posté le 08-05-2006 à 14:36:34  profilanswer
 

n°1361738
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 08-05-2006 à 14:37:37  profilanswer
 

Ce n'est pas le bench qui n'ai pas valable, c'est la conclusion qui me dérange

Citation :

On constate que désormais c'est le foreach() qui est le plus rapide.


 
Enfin, c'est toi qui voit, c'est déjà très sympa d'avoir fait quelques benchs comme ça, c'est juste que moi j'avais lu de travers, que je ne suis pas plus bête qu'un autre, mais que ça veut dire qu'un autre pourrait en tirer également la mauvaise conclusion et utiliser du foreach à outrance. :jap:

n°1361740
Profil sup​primé
Posté le 08-05-2006 à 14:40:55  answer
 

anthomicro a écrit :

<? devrait être remplacé par <?php pour la portabilité.
 
Sinon j'en ai fait un aussi :
 
http://www.codes-php.net/source-5- [...] ssives.php
 
avec déplacement et couleur + taille pseudo aléatoires des caractères ;)


 
Wep pour le <? j'ai pris une mauvaise habitude... et je m'en mors les doights. J'ai une boutique en ligne testé sous php4 avec des <? qui marche nickel. et quand je la place sous php5 avec Wamp. ca foire :(

n°1361743
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 08-05-2006 à 14:42:54  profilanswer
 


Tu peux le configurer dans le php.ini.
Ou sinon, sous un éditeur, tu fais un rechercher remplacer sur tout le site pour remplacer '<? ' par '<?php '. :D

Message cité 1 fois
Message édité par The-Shadow le 08-05-2006 à 14:43:09
n°1361748
Multinickn​ame
Ah bon...
Posté le 08-05-2006 à 14:46:09  profilanswer
 

 

Bah un petit search & replace sur le projet et c'est bon  :)

 

EDIT : burnaid :o    

 


Message édité par Multinickname le 08-05-2006 à 14:46:25
n°1361752
anthomicro
Posté le 08-05-2006 à 14:49:50  profilanswer
 

The-Shadow a écrit :

Ce n'est pas le bench qui n'ai pas valable, c'est la conclusion qui me dérange

Citation :

On constate que désormais c'est le foreach() qui est le plus rapide.


 
Enfin, c'est toi qui voit, c'est déjà très sympa d'avoir fait quelques benchs comme ça, c'est juste que moi j'avais lu de travers, que je ne suis pas plus bête qu'un autre, mais que ça veut dire qu'un autre pourrait en tirer également la mauvaise conclusion et utiliser du foreach à outrance. :jap:


 
Nan mais c'est le cas, le foreach est bien le plus rapide des deux. Après je ferai un test avec un for(....) comme tu l'as fait, mais ça n'a rien à voir for et foreach ;)

n°1361754
Profil sup​primé
Posté le 08-05-2006 à 14:53:45  answer
 

The-Shadow a écrit :

Tu peux le configurer dans le php.ini.
Ou sinon, sous un éditeur, tu fais un rechercher remplacer sur tout le site pour remplacer '<? ' par '<?php '. :D


 
Tin la prise de tête sous un éditeur, j'utilise Notepad++, On va voir. En tout cas, je vais faire une sacré sauveguarde :D

n°1361756
masklinn
í dag viðrar vel til loftárása
Posté le 08-05-2006 à 14:54:01  profilanswer
 

anthomicro a écrit :

Nan mais c'est le cas, le foreach est bien le plus rapide des deux. Après je ferai un test avec un for(....) comme tu l'as fait, mais ça n'a rien à voir for et foreach ;)


Euh si, c'est juste que foreach planque les détails de l'itération [:petrus75]


---------------
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°1361759
anthomicro
Posté le 08-05-2006 à 14:55:59  profilanswer
 

donc ça n'a rien à voir point de vue syntaxe ;) (tu fais chier hein) [:petrus75]

n°1361763
Profil sup​primé
Posté le 08-05-2006 à 14:59:19  answer
 

bon, bein nickel, Notepadd++ m'a traité cela en 2 seconde, parfait, ma boutique est donc portable :D

n°1361766
masklinn
í dag viðrar vel til loftárása
Posté le 08-05-2006 à 15:03:35  profilanswer
 

anthomicro a écrit :

donc ça n'a rien à voir point de vue syntaxe ;) (tu fais chier hein) [:petrus75]


Heuu bof quoi, dans les langages ayant encore un for classique on a une translation directe d'un truc du style

Code :
  1. for(i=0; i<arr.length; ++i) {
  2.     element = arr[i];
  3.     // ton code
  4. }


à

Code :
  1. for(element in arr) {
  2.     // ton code
  3. }


J'appelle pas trop ça 'rien à voir' perso, la première forme doit gérer manuellement le bookeeping et est moins lisible (car moins abstraite) mais ça va pas plus loin, ça reste de l'itération externe très classique [:spamafote]
 
Un truc qui a rien à voir au niveau syntaxe, c'est le passage à l'itération interne


Message édité par masklinn le 08-05-2006 à 15:04:07

---------------
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°1361769
masklinn
í dag viðrar vel til loftárása
Posté le 08-05-2006 à 15:11:23  profilanswer
 

Je vais spécifier quand même:
 
L'itération externe, c'est quand l'itération et les manipulations sur valeurs sont gérées depuis l'extérieur de la séquence itérée. Un for ou un foreach est classiquement une itération externe: on extrait les objets de la séquence un par un et on les manipule depuis l'extérieur de la séquence.
 
L'itération interne, c'est qu'on ne gère pas l'itération du tout, on va juste fournir à l'objet séquence l'opération à effectuer (et potentiellement le type d'itération) et ensuite elle se démerde toute seule.
 
Ruby ayant les deux, je vais montrer ce que ça donne:
 
Imaginons que je veuilles itérer sur un tableau "a" et afficher ("puts" en ruby) chaque objet contenu
 
Itération externe:

Code :
  1. for val in a
  2.    puts a
  3. end


 
Itération interne:

Code :
  1. a.each {|v| puts v}


 
Dans le 2e cas, on envoie l'opération "puts v" prenant un argument unique "v" à la méthode itérative "each".
 
(C'est probablement suffisament clair, mais histoide de, le rôle d'each, est d'appliquer l'opération lui étant fournie en argument à chaque élément de sa séquence)


Message édité par masklinn le 08-05-2006 à 15:11:53

---------------
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°1361772
anthomicro
Posté le 08-05-2006 à 15:16:33  profilanswer
 

Je ferai des tests et je verrai si le for manuel et plus rapide que le foreach ;)

n°1361775
joce
Architecte / Développeur principal
&#034;BugHunter&#034;
Posté le 08-05-2006 à 15:20:27  profilanswer
 

zapan666 a écrit :

ou "mieux", tu fais un replace.


ou mieux tu fais un ON DUPLICATE KEY UPDATE

n°1361779
joce
Architecte / Développeur principal
&#034;BugHunter&#034;
Posté le 08-05-2006 à 15:26:39  profilanswer
 

chaced a écrit :

Dans le code, j'en viens a faire des trucs du genre remplacer un $i++ par un ++$i... comme si ça apporter vraiement quelque chose lol, mais bon j'ai la concience tranquille, j'economise 1µseconde comme ça :D


installe un accelerateur php, t'économiseras bcp de temps

n°1361781
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 08-05-2006 à 15:28:58  profilanswer
 

anthomicro a écrit :

Je ferai des tests et je verrai si le for manuel et plus rapide que le foreach ;)


Je te file un petit bench vite fait.
Si tu veux l'essayer sur ton serveur, tu verras pourquoi quand je lis "Foreach est plus rapide", ça m'embête. :D
Tu commentes ou décommentes for ou foreach alternativement.
 

Code :
  1. <?php
  2. $montab[]=array();
  3. for ($i=0;$i<50000;$i++) {
  4. $montab[$i]=$i;
  5. }
  6. $microstart = getmicrotime();
  7. for ($i=0;$i<50000;$i++) {
  8. $montab[$i]++;
  9. }
  10. /*
  11. foreach ($montab AS $key) {
  12. $montab[$key]++;
  13. }
  14. */
  15. $fin_compte=getmicrotime();
  16. $duree=($fin_compte-$microstart);
  17. echo substr($duree,0,5).' sec.';
  18. function getmicrotime() {
  19.    $mtime = microtime();
  20.    $mtime = explode(" ",$mtime);
  21.    $mtime = $mtime[1] + $mtime[0];
  22.    return ($mtime);
  23. }
  24. ?>


 
Par contre, tu n'as pas répondu à ma question, quelle version de PHP utilises-tu ?


Message édité par The-Shadow le 08-05-2006 à 15:29:22
n°1361784
anthomicro
Posté le 08-05-2006 à 15:35:50  profilanswer
 

Je ne me rappelle plus de la version utilisée lors des tests (c'était du PHP4, maintenant te dire la révision et le reste, aucune idée).
 
Mais je pense que tu ne m'as pas compris depuis le début...
 
je compare le foreach() avec le while(list()) et dans CE cas, le foreach est plus rapide...
 
je n'ai pas (tout du moins pas encore) dit que  
 
foreach ($montab AS $key)
{
    $montab[$key]++;
}
 
était plus rapide que ça :
 
 
for ($i=0;$i<50000;$i++)
{
    $montab[$i]++;
}

n°1361786
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 08-05-2006 à 15:40:45  profilanswer
 

anthomicro a écrit :

Mais je pense que tu ne m'as pas compris depuis le début...
 
je compare le foreach() avec le while(list()) et dans CE cas, le foreach est plus rapide...


Si si, j'ai bien compris, mais ça me dérange quand même de voir foreach est plus rapide car ce n'est vrai que quand il y a list(). :D
Ouai je sais, je suis un chieur des fois. :D

n°1361787
anthomicro
Posté le 08-05-2006 à 15:43:28  profilanswer
 

Bah étant donné que j'ai bien précisé que je faisais le test entre ces deux syntaxes ;) c'est comme si tu me disais "le plus rapide c'est echo" si j'avais affiché un test entre print "machaine $mavar"; et print 'machaine'.$mavar;

n°1361789
masklinn
í dag viðrar vel til loftárása
Posté le 08-05-2006 à 15:55:24  profilanswer
 

Code :
  1. <?php
  2.    $a[] = array();
  3.  
  4.    for($i = 0; $i < 50000; ++$i){
  5.        $a[$i] = $i;
  6.    }
  7.  
  8.    $t0 = microtime(true);
  9.  
  10.    for($i=0; $i<50000; ++$i) {
  11.        $v = $a[$i];
  12.        ++$v;
  13.    }
  14.  
  15.    $t1 = microtime(true);
  16.  
  17.    foreach($a as $v){
  18.        ++$v;
  19.    }
  20.  
  21.    $t2 = microtime(true);
  22.  
  23.    $i = -1;
  24.    while(++$i < 50000){
  25.        $v = $a[$i];
  26.        ++$v;
  27.    }
  28.  
  29.    $t3 = microtime(true);
  30.  
  31.    $for = $t1 - $t0;
  32.    $foreach = $t2 - $t1;
  33.    $while = $t3 - $t2;
  34.    echo "<p>for: $for</p>";
  35.    echo "<p>foreach: $foreach</p>";
  36.    echo "<p>while: $while</p>";
  37. ?>


Aux variations près for et foreach sont à peu près égaux (à vue de nez, for est en moyenne plus rapide que foreach), while est toujours plus rapide que le plus rapide des deux autres.
 
Pour le test de the-shadow, par contre, foreach met 3 fois plus longtemps que for [:pingouino]
(par contre il y a un problème de nommage dans ton truc the, foreach ne renvoie pas une clé mais une valeur, sauf à le demander explicitement avec un foreach($a as $k => $v)... enfin il me semble)
(et oui je sais que tes clés et tes valeurs sont les mêmes dans le cas présent :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°1361790
anthomicro
Posté le 08-05-2006 à 15:57:41  profilanswer
 

while est plus rapide que for, je l'ai mis sur mon article ;)
 
Par contre teste aussi avec while(list()=each()) et tu verras ;)

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

anthomicro a écrit :

while est plus rapide que for, je l'ai mis sur mon article ;)
 
Par contre teste aussi avec while(list()=each()) et tu verras ;)


Vachement étonnant, tu tapes un appel de fonction + un appel de builtin à chaque tour de boucle, c'est n'importe quoi [:pingouino]
 
edit: mon dieu, ils en font la pub sur la page php sur each [:psywalk]

Message cité 1 fois
Message édité par masklinn le 08-05-2006 à 16:03:36

---------------
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°1361794
zapan666
Tout est relatif
Posté le 08-05-2006 à 16:02:50  profilanswer
 

C'est quoi l'interet d'utiliser un foreach sur un tableau qui n'est pas associatif ? Pour moi, il est tres pratique sur un tableau associatif  
 
(genre ca)

Code :
  1. $tab = array('truc' => 'bidule', 'machin' => 'chose', ...);


---------------
my flick r - Just Tab it !
n°1361795
masklinn
í dag viðrar vel til loftárása
Posté le 08-05-2006 à 16:05:25  profilanswer
 

zapan666 a écrit :

C'est quoi l'interet d'utiliser un foreach sur un tableau qui n'est pas associatif ?


Simplifier la syntaxe de tes boucles [:spamafote]  
 
Foreach a deux syntaxes en php, foreach($array as $k => $v) qui te donne un couple (clé, valeur) et foreach($array as $v) qui te donne uniquement la valeur, la 2e syntaxe fonctionne très bien quelle que soit le type de séquence [:spamafote]
 
Donc même si ton tableau est une séquence simple, faire

Code :
  1. for($i=0; $i<count($array); ++$i) {
  2.    $v = $array[$i];
  3. }


est beaucoup moins lisible que

Code :
  1. foreach($array as $v) {
  2. }


Message édité par masklinn le 08-05-2006 à 16:07:06

---------------
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°1361797
anthomicro
Posté le 08-05-2006 à 16:08:00  profilanswer
 

masklinn a écrit :

Vachement étonnant, tu tapes un appel de fonction + un appel de builtin à chaque tour de boucle, c'est n'importe quoi [:pingouino]
 
edit: mon dieu, ils en font la pub sur la page php sur each [:psywalk]


 
Le while(list()=each()) est désormais plus lent que le foreach() mais il fut un temps (aussi con que ça puisse paraître) où ça n'était pas le cas, c'est pour ça que j'ai fait le test.

n°1361802
Cyrius-c
Posté le 08-05-2006 à 16:18:58  profilanswer
 

anthomicro a écrit :

2 ms en temps de génération SQL seulement ? tu fais combien de requêtes, et ton forum est rempli à peu près comment ?

 


EN temps total, je fais un mocrotime tout simplement.
Je fais en general, deux, troix requetes par page. 1 plus souvent quand la personne n'est pas membre.

 

POur l'instant y'a pas grand chose dessus, mais avec des millions de messages le temps grimpe pas enorme. Je ne me souviens plus, mais c'etait très peu.

n°1361803
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 08-05-2006 à 16:19:45  profilanswer
 

masklinn a écrit :


Pour le test de the-shadow, par contre, foreach met 3 fois plus longtemps que for [:pingouino]
(par contre il y a un problème de nommage dans ton truc the, foreach ne renvoie pas une clé mais une valeur, sauf à le demander explicitement avec un foreach($a as $k => $v)... enfin il me semble)
(et oui je sais que tes clés et tes valeurs sont les mêmes dans le cas présent :o)


Ouai, j'suis une tâche, je me suis planté.
Enfin, même avec  

Code :
  1. foreach ($montab AS $val => $key) {
  2.     $montab[$key]++;
  3. }


on voit comment le foreach est ridiculement lent.
(chez moi, c'est pas 3 fois plus longtemps, c'est plutot de l'ordre de 5 fois, ça doit dépendre d'autres paramètres).


Message édité par The-Shadow le 08-05-2006 à 16:20:06
n°1361804
anthomicro
Posté le 08-05-2006 à 16:20:14  profilanswer
 

Cyrius-c a écrit :

EN temps total, je fais un mocrotime tout simplement.
Je fais en general, deux, troix requetes par page. 1 plus souvent quand la personne n'est pas membre.
 
POur l'instant y'a pas grand chose dessus, mais avec des millions de messages le temps grimpe pas enorme. Je ne me souviens plus, mais c'etait très peu.


 
Pour ton compteur de connectés tu ne comptes que les membres donc ?

Message cité 1 fois
Message édité par anthomicro le 08-05-2006 à 16:21:01
n°1361805
Cyrius-c
Posté le 08-05-2006 à 16:21:46  profilanswer
 

anthomicro a écrit :

Pour ton compteur de connectés tu ne comptes que les membres donc ?

 


La question s'adresse à moi?

n°1361807
Cyrius-c
Posté le 08-05-2006 à 16:23:49  profilanswer
 

Oui tu as quoté :)
Non, je fais simplement des requetes differentes si la personne est membre ou non.
 
SI elle n'est pas membre, je fais pas les requetes pour les drapeaux par exemple.

n°1361809
anthomicro
Posté le 08-05-2006 à 16:32:08  profilanswer
 

Nan parce que 2ms pour gérer la page ça me semble très peu ;) tu ne parles que tu temps SQL (et encore c'est peu) ? c'est pour ça que je te demandais combien tu faisais de requêtes par page ;)

n°1361814
Cyrius-c
Posté le 08-05-2006 à 16:40:02  profilanswer
 

C'est aléatoire. J'avais posté un qqs pages avant que le tps de generation dependait pas aml du navigateur, ce qui m'etonne. Sous firefox, j'ai 0.05 et sous w3m j'ai 0.003
....

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  360  361  362  ..  486  487  488  489  490  491

Aller à :
Ajouter une réponse
 

Sujets relatifs
question avec les forums phpbb2[php] trouver la premier place ou inserer un enregistrement (résolu)
Forums phpBBQui connait l'algo du Passticket et sa mise en place en VB ?
[Merise] Mise en place d'un MCDFocus mal placé....
[Blabla/Prog] Les développeurs foromeurs sont-ils des feignasses?Mise en place d'un formulaire CGI
forums création de site internetJava - Mise en place d'une api (Servlet)
Plus de sujets relatifs à : les développeurs de forums, les 3/4 des forums sont down /o\


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