Petite question de rapidité

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Petite question de rapidité

Re: Petite question de rapidité

par stealth35 » 31 août 2010, 03:24

la pré-incrémentation me semblerait plus juste que la post (et plus rapide en plus)

en post ($truc++) la valeur est incrémenté au prochain appelle)
en pré (++$truc) c'est fait tout de suite
$tmp = 0;

echo ++$tmp;  //1
echo $tmp++;  //1
echo $tmp;     //2
bon après... je rejoins les autres.

Re: Petite question de rapidité

par AB » 29 août 2010, 05:00

Un petit résolu ?

Re: Petite question de rapidité

par Bosse.cie » 28 août 2010, 19:42

Justement, je ne code pas en mode objet.


Il y a un truc que je n'arrive pas bien à saisir avec l'objet.



Mais bon, c'était une question du samedi quoi.


Bon w.e.

Re: Petite question de rapidité

par AB » 28 août 2010, 18:58

Peut-être qu'un de ces 4 j'essayerais de tester; pour voir.
Encore un qui n'est pas surchargé de travail pour s'amuser avec ces broutilles :)

Les optimisations d'un code ne se situent pas réellement à ce niveau. Il y a bien d'autres choses à faire avant (optimisation du schéma des tables, des requêtes etc.)

Mais cela dit, plutôt que de te poser des questions, autant faire le code pour y répondre, ça t'aurais pris moins de temps :wink:
$montableau = array();
$compteur = 0;
$mavaleur = 1;


$time = microtime(true);
for ($i=0; $i<1000000; $i++) 
{
$montableau[$compteur] = $mavaleur;
$compteur++;
}
$time_end = microtime(true);

$time_tot = $time_end - $time;
echo 'durée exécution 1 = ' . $time_tot.'<br />';


$montableau = array();
$compteur = 0;

$time = microtime(true);
for ($i=0; $i<1000000; $i++) 
{
$montableau[$compteur++] = $mavaleur;
}
$time_end = microtime(true);

$time_tot = $time_end - $time;
echo 'durée exécution 2 = ' . $time_tot.'<br />';
Bon le verdict est sans appel, il faut 1 million d'itérations dans la boucle pour gagner au total 1/100 de seconde avec la solution 2 (moyenne approximative sur plusieurs tests).
A toi de voir mais normalement on essaie de garder un code le plus lisible possible tant que la différence n'est pas sensible pour l'usage courant. Donc à moins que tu fasses couramment des boucles de plusieurs millions d'itérations...
Et puis si tu te pose trop de questions niveau rapidité absolue, tu vas finir par ne plus coder en mode objet car le procédural est généralement plus rapide...

Re: Petite question de rapidité

par Bosse.cie » 28 août 2010, 18:36

On est tous pareil.

Re: Petite question de rapidité

par sylvaing26 » 28 août 2010, 16:50

Quand tu commences à gérer à peu près un truc, tu cherches la petite bête; sinon on s'ennuie.
C'est vrai ce que tu dis, moi je suis pareil, quand je gère, j'essaie de pousser les limites + loin, je me pose des questions, des problèmes ...
C'est comme ca qu'on avance ! :lol:

Re: Petite question de rapidité

par Bosse.cie » 28 août 2010, 16:44

C'est ça le truc.

Quand tu commences à gérer à peu près un truc, tu cherches la petite bête; sinon on s'ennuie.

Peut-être qu'un de ces 4 j'essayerais de tester; pour voir.

Re: Petite question de rapidité

par sylvaing26 » 28 août 2010, 16:13

a d'acc
A priori, je ne pense pas qu'il y ai une grande différence entre les deux syntaxes.
Après tu peux tester toi même en voyant le temps d'execution entre les deux syntaxes avec un grand nombre.
Mais a priori je pense pas que tu te prenne la tête pour un gros detail ... :wink:

Re: Petite question de rapidité

par Bosse.cie » 28 août 2010, 16:11

Oui, sauf si c'est à l'intérieur d'une condition elle-même dans une boucle.

Par exemple, on ne va pas incrémenter à chaque tour de boucle.



Comment ça je me prends la tête pour rien !


D'abord c'est le week end, je fait ce que je veux de ma tête.

Re: Petite question de rapidité

par sylvaing26 » 28 août 2010, 16:07

eh bien en fait si c'est dans une boucle il y a une manière plus correcte de faire ca
for($compteur = 0; $compteur <  $nombre_limite; $compteur++){
$montableau[$compteur] = $mavaleur;
}

Re: Petite question de rapidité

par Bosse.cie » 28 août 2010, 16:04

Merci.

Par contre, si c'est dans une boucle (avec un nombre important d'itérations), cela peut peut-être un peu jouer donc ?

Re: Petite question de rapidité

par sylvaing26 » 28 août 2010, 15:59

Personnellement je ne pense pas que le fait que tu incrémente ta variable avec une ligne supplémentaire de code ait une grande influence sur la rapidité d'execution de ton script.
En revanche, personnellement, je pense que la première solution est en effet plus explicite pour une relecture

Petite question de rapidité

par Bosse.cie » 28 août 2010, 15:54

Bonjour,

J'ai :

$montableau[$compteur] = $mavaleur;
$compteur++;

Que je peux changer en :

$montableau[$compteur++] = $mavaleur;


Outre le fait que c'est plus concis, mais que perso, je trouve ça moins clair lors d'une relecture, est-ce que ça a un intérêt ?

Bref, est-ce que c'est plus rapide ?


Je sais, c'est pas une question très importante, mais bon...