Frage

__builtin_expect von GCC kann durch Programmierer verwendet werden, um zu zeigen, welche Varianten zu erwarten sind sehr häufig sein, und die sind selten. Aber __builtin_expect haben nur "wahr" und "falsch" (0% oder 100% Wahrscheinlichkeit)

Für einige großen Projekte ist es unterschiedlich hart Profil Feedback (-fprofile-arcs) zu bekommen, und manchmal Programmierer weiß, welche Wahrscheinlichkeit Niederlassung er in einem gewissen Punkt des Programms hat.

Es ist möglich, einen Hinweis zu Compiler zu geben, dass ein Zweig hat Wahrscheinlichkeit> 0% und <100%?

War es hilfreich?

Lösung

Wahre und falsche wirklich bedeutet, dass „die erste Variante ist wahrscheinlicher“ und „die zweite Variante wahrscheinlicher ist“. Es gibt keine praktische Notwendigkeit für andere Werte als diese. Der Compiler wird nicht möglich sein, diese Informationen zu verwenden.

Andere Tipps

hier :

lang __builtin_expect_with_probability

(long exp , lang c , Doppel Wahrscheinlichkeit ) Die Funktion gleiche Semantik wie __builtin_expect, aber Anrufer liefert die erwartete Wahrscheinlichkeit, dass exp == c . Letztes Argument Wahrscheinlichkeit ist eine Fließwert im inklusiven Bereich 0.0f und 1.0f.

Nicht-Determinismus ist kein wünschenswertes Merkmal für Compiler-Ausgang, allein Sprachfunktionen lassen. Es gibt keinen wirklichen Nutzen für die nur teilweise Optimierung lieber einen Zweig, und kein Compiler ich kann dies bewusst bin, tun.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top