Différence de vitesse entre les if-Else et opérateur Ternaire dans le C...?

Donc à la suggestion d'un collègue, je viens de tester la différence de vitesse entre l'opérateur ternaire et l'équivalent if-Else bloc... et il semble que l'opérateur ternaire rendements de code qui est entre 1x et 2x plus rapide que if-Else. Mon code est:

  gettimeofday(&tv3, 0);
  for(i = 0; i < N; i++)
  {
     a = i & 1;
     if(a) a = b; else a = c;
  }
  gettimeofday(&tv4, 0);


  gettimeofday(&tv1, 0);
  for(i = 0; i < N; i++)
  {
     a = i & 1;
     a = a ? b : c;
  }
  gettimeofday(&tv2, 0);

(Désolé pour l'utilisation de gettimeofday et pas clock_gettime... je m'efforcerai de m'améliorer.)

J'ai essayé de changer l'ordre dans lequel j'ai programmé les blocs, mais les résultats semblent persister. Ce qui donne? Aussi, l'if-Else montre beaucoup plus de variabilité en termes de vitesse d'exécution. Dois-je être l'examen de l'assemblée généré par gcc?

Par la voie, c'est tout à l'optimisation du niveau zéro (-O0).

Suis-je imaginer cela, ou est-il quelque chose que je ne suis pas prise en compte, ou est-ce un dépendant de la machine, ou quoi? Toute aide est appréciée.

Repères avec les optimisations sont vide de sens...
"Par la voie, c'est tout à l'optimisation du niveau zéro (-O0)." cela signifie Que vous avez dit au compilateur de ne pas optimiser (en gros), c'est donc sans surprise que cela va générer plus de commentaires (et donc plus lent) code pour plus de commentaires de code. Si vous jeter un -O1, je soupçonne que vous ne remarquerez aucune différence. Ne voyant pas beaucoup de point en regardant la distinction de la performance dans unoptimized code.
Remarque: ? est l'opérateur conditionnel, Un opérateur ternaire, pas L'opérateur ternaire.
c'est le seul opérateur ternaire en C++, d'où L'opérateur ternaire.
ouais, et les etats-unis pourraient, à l'avenir passer à un système de d'avoir plusieurs titulaires Présidents, mais jusqu'alors, Obama (ou d'autres titulaires) est LE Président, et Bush est Un Président. Drôle de langue ;-p

OriginalL'auteur Patrick87 | 2011-07-19