Branch-Prediction-Optimierung in GCC
Die Intel-Architektur bietet einen Mechanismus zur Beeinflussung der Branch-Vorhersage im generierten Code. Mit der Funktion __builtin_expect() kann GCC erzwingen, dass die Verzweigungsvorhersage einen bestimmten Weg einschlägt.
Die Syntax für __builtin_expect() lautet:
long __builtin_expect (long exp, long c)
wobei:
Zum Beispiel erzwingen Verzweigungsvorhersage, um im folgenden C-Code immer den „wahren“ Zweig zu nehmen:
if (normal) { doSomethingNormal(); } else { exceptionalCase(); }
Sie würden die folgende Anweisung verwenden:
if (__builtin_expect(normal, 1))
Um die Verwendung zu vereinfachen, ist es üblich, Folgendes zu definieren Makros:
#define likely(x) __builtin_expect (!!(x), 1) #define unlikely(x) __builtin_expect (!!(x), 0)
Es ist jedoch wichtig zu beachten, dass:
Das obige ist der detaillierte Inhalt vonWie kann die Branch-Prediction-Optimierung in GCC verbessert werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!