Prog C : multiple if ou ||

Résolu
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. 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
    1. Contributeur
      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
      1. 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
        1. 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
          1. @garion28
            La fonction s'arréte au premier return. Donc pas plusieur return ;)
            0
            1. 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