Page 1 sur 1
Petite question de rapidité
Posté : 28 août 2010, 15:54
par Bosse.cie
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...
Re: Petite question de rapidité
Posté : 28 août 2010, 15:59
par sylvaing26
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
Re: Petite question de rapidité
Posté : 28 août 2010, 16:04
par Bosse.cie
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é
Posté : 28 août 2010, 16:07
par sylvaing26
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é
Posté : 28 août 2010, 16:11
par Bosse.cie
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é
Posté : 28 août 2010, 16:13
par sylvaing26
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 ...

Re: Petite question de rapidité
Posté : 28 août 2010, 16:44
par Bosse.cie
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é
Posté : 28 août 2010, 16:50
par sylvaing26
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 !

Re: Petite question de rapidité
Posté : 28 août 2010, 18:36
par Bosse.cie
On est tous pareil.
Re: Petite question de rapidité
Posté : 28 août 2010, 18:58
par AB
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
$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é
Posté : 28 août 2010, 19:42
par Bosse.cie
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é
Posté : 29 août 2010, 05:00
par AB
Un petit résolu ?
Re: Petite question de rapidité
Posté : 31 août 2010, 03:24
par stealth35
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.