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   -
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
A voir également:

5 réponses

swed
 
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.
1
dubcek Messages postés 19023 Date d'inscription   Statut Contributeur Dernière intervention   5 640
 
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
0
MatthMirage Messages postés 47 Statut Membre 4
 
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
0
garion28 Messages postés 1545 Date d'inscription   Statut Membre Dernière intervention   406
 
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)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
MatthMirage Messages postés 47 Statut Membre 4
 
@garion28
La fonction s'arréte au premier return. Donc pas plusieur return ;)
0
garion28 Messages postés 1545 Date d'inscription   Statut Membre Dernière intervention   406
 
ah d'ac, c'est toujours une info qui est bonne a prendre ^^ (même si perso je ne suis pas adepte de la premiere méthode)
0