Fermer2
ThibautLe 25/09/2012 à 14:43
Bonjour,

J'ai cherché un peu sur google et n'ai pas trouvé ce qui est sans doute évident pour ceux qui connaissent bien les processeurs modernes et les versions de GCC récentes.

Soit l'alternative if (c) then A else B. Connaissant le comportement du programme pour les données le plus souvent traitées, je sais que, la plupart du temps, c sera faux et B exécuté. Serait-il plus efficace en moyenne d'écrire if (not c) then B else A ?

En assembleur 68k, j'avais l'habitude de choisir la première écriture, car elle génère
- la plupart du temps : seulement 1 branchement pour aller en B
- quelquefois : 1 branchement non exécuté pour poursuivre en A + 1 branchement pour éviter B
Alors que la seconde écriture aurait généré
- la plupart du temps : 1 branchement non exécuté pour poursuivre en B + 1 branchement pour éviter A
- quelquefois : 1 branchement pour aller en A


Mais qu'en est-il sur un processeur moderne ? On suppose que A et B sont petits, j'imagine que ca permet de ne pas s'occuper de l'influence des défauts de cache.