Optimisation de la prédiction de branche dans GCC
L'architecture Intel fournit un mécanisme pour influencer la prédiction de branche dans le code généré. Avec la fonction __builtin_expect(), GCC peut forcer la prédiction de branche à suivre une certaine direction.
La syntaxe de __builtin_expect() est :
long __builtin_expect (long exp, long c)
où :
Par exemple, pour forcer prédiction de branche pour toujours prendre la "vraie" branche dans le code C suivant :
if (normal) { doSomethingNormal(); } else { exceptionalCase(); }
Vous utiliseriez l'instruction suivante :
if (__builtin_expect(normal, 1))
Pour simplifier l'utilisation, il est courant de définir macros :
#define likely(x) __builtin_expect (!!(x), 1) #define unlikely(x) __builtin_expect (!!(x), 0)
Cependant, il est important de noter que :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!