Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Mythe ou réalite : ++i / i++. [ Divers / Général ] (moumouteb)

mercredi 23 avril 2008 à 19:06:15 | Mythe ou réalite : ++i / i++.

moumouteb

Membre Club
Bonjour.

Dans une boucle for est-il vrai que l'incrémentation ++i est préférable à i++ (ou l'inverse) car en assembler elle demande moins d'opérations?

Merci de m'éclairer sur ce mystère..


Quand la merde vaudra de l'or les pauvres naitront sans trou du cul. Coluche.

mercredi 23 avril 2008 à 19:26:24 | Re : Mythe ou réalite : ++i / i++.

jfrancois

Bonjour,

Il est toujours préférable d'utiliser la préincrémentation (++i) à la postincrémentation (i++). Le problème se pose quand i est une instance de classe; la postincrémentation signifie qu'une instance va être créée (pour conserver la valeur avant incrémentation) avant que l'instance i soit incrémentée et c'est l'instance créée qui est retournée (la valeur avant incrémentation ... qui ne sert à rien ici !).

Comme de toute façon la pré/postincrémentation n'a aucune signification dans une instruction du genre ++i ou i++ (ça n'a de signification que si i est utilisé avant/après l'incrémentation comme dans j = ++i; ou j = i++; où là il y a une vraie différence) autant toujours utiliser la préincrémentation (qui est plus lisible aussi).

Jean-François


mercredi 23 avril 2008 à 19:58:01 | Re : Mythe ou réalite : ++i / i++.

nickydaquick

Membre Club

Bonjour,

Je suis entierement d'accord avec toi jfrancois, :D  ++i
je suis heureux de faire partie d'une grande famille ...!

mercredi 23 avril 2008 à 21:52:54 | Re : Mythe ou réalite : ++i / i++.

BruNews

Administrateur CodeS-SourceS
Réponse acceptée !
Pour revenir à la question initiale, c'est strictement identique hors contexte.

// code ici
i++;
// code ici
++i;

c'est le compilo que décidera suivant l'arbre d'optimisation obtenu s'il mettra:
inc eax
ou: add eax, 1
ou: lea eax, [eax+1]

Dans tous les cas c'est 1 cycle parallélisable que soit PRE ou POST, tout autre discours n'est que légende urbaine. Ensuite si mettre du pré ou du post ne sera dicté que par les nécessités de calcul de ton algo.

ciao...
BruNews, MVP VC++

samedi 26 avril 2008 à 18:11:08 | Re : Mythe ou réalite : ++i / i++.

moumouteb

Membre Club
Merci.


Quand la merde vaudra de l'or les pauvres naitront sans trou du cul. Coluche.



Cette discussion est classé dans : mythe, réalite


Répondre à ce message

Sujets en rapport avec ce message



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 16,677 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.