Prog C : multiple if ou ||
Résolu
MatthMirage
Messages postés
47
Statut
Membre
-
garion28 Messages postés 1545 Date d'inscription Statut Membre Dernière intervention -
garion28 Messages postés 1545 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'essaye d'optimisé un bout de code en C.
Je me pose la question suivante :
Quelle code sera le plus rapide ?
if (toto==1) return 0;
if (tata == 0) return 0;
if (titi == 2) return 0;
Ou
if (toto == 1 ||
tata == 0 ||
titi == 2)
return 0;
Merci
J'essaye d'optimisé un bout de code en C.
Je me pose la question suivante :
Quelle code sera le plus rapide ?
if (toto==1) return 0;
if (tata == 0) return 0;
if (titi == 2) return 0;
Ou
if (toto == 1 ||
tata == 0 ||
titi == 2)
return 0;
Merci
Configuration: Windows 7 / Firefox 3.6
5 réponses
-
Bonjour,
Les deux codes sont exactement identiques en terme de rapidité;
Dans les deux cas, les 3 tests sont effectués séquentiellement jusqu'à ce qu'UN soit vrai.
Dubcek : Je confirme qu'avec l'opérateur ||, le test s'arrête au premier VRAI ; Et donc c'est identique dans les deux cas.
Cordialement,
M. -
hello
le premier parce que si toto=1, il ne fait qu'un test ou si tata=0, que 2.
mais il faudrait regarder le code généré par l'optimiseur, parce qu'avec || peut-être que le test s'arrête au premier vrai -
Merci pour ta reponse,
Je viens juste de finir un test.
Le code généré (asembleur et compilation compléte) est plus leger dans le cas ||, et le test s'arréte bien au premier vrai ;)
Merci en tout cas,
Je cloture :D -
je pencherai pour le deuxième puisque quelqu'au final ca retourne 0
de plus si tes 3 variables sont bien égal aux valeur associé alors ca retournera 3 fois 0, ce qui plantera (c'est pour ca qu'il est préférable de n'avoir qu'un seul return par fonction) -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
@garion28
La fonction s'arréte au premier return. Donc pas plusieur return ;)