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

  • Votes
  • Date
  • Date décroissante
  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
    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. 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
        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)
          1. @garion28
            La fonction s'arréte au premier return. Donc pas plusieur return ;)
            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)