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
Configuration: Windows 7 / Firefox 3.6

5 réponses

  1. 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
  2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    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
  3. 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
  4. garion28 Messages postés 1545 Date d'inscription   Statut Membre Dernière intervention   408
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. MatthMirage Messages postés 47 Statut Membre 4
     
    @garion28
    La fonction s'arréte au premier return. Donc pas plusieur return ;)
    0
    1. garion28 Messages postés 1545 Date d'inscription   Statut Membre Dernière intervention   408
       
      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