<causons technique>
C'est vrai que là il y a 14 nops d'affilée, ce qui n'est pas optimal, mais à mon avis négligeable face au reste de la fonction (même s'il est toujours tentant de grapiller quelques picosecondes ;) ). Quand GCC fait l'optimisation des alignements, il rajoute effectivement un jump direct si le remplissage dépasse un certain nombre d'octets. Ou alors il remplit l'espace avec des instructions qui n'ont pas d'effet de bord visible mais prennent de la place, genre lea 0x0(%esi),%esi qui occupe 3 octets et qui est toujours exécutée en 1 cycle.
Et Sigma a effectivement désoptimisé le code, puisqu'ils ont déroulé la boucle (au lieu de boucler 16 fois, ils ont mis 16 copies du code bout à bout) (L'option -funroll-loops de gcc). C'est une technique efficace si le code de bouclage est non négligeable devant le code utile dans la boucle; mais pour le coup, c'est pas le cas ici, et ça remplit le cache de code du processeur pour rien...
</technique>
[^] # Re: nop, nop, nop, et re-nop
Posté par daggett . En réponse à la dépêche Arrêt du développement de XviD. Évalué à 10.
C'est vrai que là il y a 14 nops d'affilée, ce qui n'est pas optimal, mais à mon avis négligeable face au reste de la fonction (même s'il est toujours tentant de grapiller quelques picosecondes ;) ). Quand GCC fait l'optimisation des alignements, il rajoute effectivement un jump direct si le remplissage dépasse un certain nombre d'octets. Ou alors il remplit l'espace avec des instructions qui n'ont pas d'effet de bord visible mais prennent de la place, genre lea 0x0(%esi),%esi qui occupe 3 octets et qui est toujours exécutée en 1 cycle.
Et Sigma a effectivement désoptimisé le code, puisqu'ils ont déroulé la boucle (au lieu de boucler 16 fois, ils ont mis 16 copies du code bout à bout) (L'option -funroll-loops de gcc). C'est une technique efficace si le code de bouclage est non négligeable devant le code utile dans la boucle; mais pour le coup, c'est pas le cas ici, et ça remplit le cache de code du processeur pour rien...
</technique>
Aaaah les joies de l'optimisation assembleur !