begin process at 2010 02 10 02:38:49
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Général

 > 

Mythe ou réalite : ++i / i++.


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Mythe ou réalite : ++i / i++.

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ée dans : mythe, réalite


Répondre à ce message

Sujets en rapport avec ce message



Nos sponsors


Sondage...

Comparez les prix


HTC Hero

Entre 550€ et 550€

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,187 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales