C'est une erreur de croire ça. Les jumps se prédisent, pas les valeurs. Le seul cas ou virer les jumps est bien, c'est dans le cas ou la prédiction se vautre tout le temps (parsing JSON, par exemple).
De mémoire, la règle c'est "forward taken, backward not taken", si l'adresse n'est pas déjà connue. Ici, le test est toujours faux, donc la prédiction marche à fond.
Par contre, si vous voulez un code déroulage de boucle, il faut regarder le code RAID soft de Linux. Typiquement, il utilise V+=8 dans la boucle for et ensuite v[0] v[1] v[2]... dans le corps de boucle, l'usage de valeur fixe permet d'économiser des instructions.
[^] # Re: Sans SSE
Posté par Nicolas Boulay (site web personnel) . En réponse au journal Recherche de valeur dans un tableau et l'écosystème des compilateurs C++. Évalué à 6.
C'est une erreur de croire ça. Les jumps se prédisent, pas les valeurs. Le seul cas ou virer les jumps est bien, c'est dans le cas ou la prédiction se vautre tout le temps (parsing JSON, par exemple).
De mémoire, la règle c'est "forward taken, backward not taken", si l'adresse n'est pas déjà connue. Ici, le test est toujours faux, donc la prédiction marche à fond.
Par contre, si vous voulez un code déroulage de boucle, il faut regarder le code RAID soft de Linux. Typiquement, il utilise V+=8 dans la boucle for et ensuite v[0] v[1] v[2]... dans le corps de boucle, l'usage de valeur fixe permet d'économiser des instructions.
"La première sécurité est la liberté"