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

Résolu
moumouteb Messages postés 192 Date d'inscription dimanche 16 janvier 2005 Statut Membre Dernière intervention 28 février 2011 - 23 avril 2008 à 19:06
moumouteb Messages postés 192 Date d'inscription dimanche 16 janvier 2005 Statut Membre Dernière intervention 28 février 2011 - 26 avril 2008 à 18:11
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..

<hr size="2" width="100%" />Quand la merde vaudra de l'or les pauvres naitront sans trou du cul. Coluche.

4 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
23 avril 2008 à 21:52
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++
3
cs_jfrancois Messages postés 482 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 5 décembre 2009 2
23 avril 2008 à 19:26
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
0
nickydaquick Messages postés 416 Date d'inscription vendredi 31 janvier 2003 Statut Membre Dernière intervention 19 décembre 2013 3
23 avril 2008 à 19:58
Bonjour,

Je suis entierement d'accord avec toi jfrancois, :D  ++i
je suis heureux de faire partie d'une grande famille ...!
0
moumouteb Messages postés 192 Date d'inscription dimanche 16 janvier 2005 Statut Membre Dernière intervention 28 février 2011 10
26 avril 2008 à 18:11
Merci.

<hr size="2" width="100%" />Quand la merde vaudra de l'or les pauvres naitront sans trou du cul. Coluche.
0
Rejoignez-nous