Domanda

__builtin_expect da GCC può essere utilizzato dai programmatori per mostrare che varianti dovrebbero essere molto spesso e che sono rari. Ma __builtin_expect hanno solo "vero" e "falso" (0% o 100% di probabilità)

Per alcuni grandi progetti è variare difficile ottenere profilo di feedback (-fprofile-arcs), e, talvolta, il programmatore sa, che cosa probabilità di filiale che hanno in un certo punto del programma.

E 'possibile dare un suggerimento al compilatore che un ramo hanno probabilità> 0% e <100%?

È stato utile?

Soluzione

Vero e falso veramente dire che "la prima variante è più probabile" e "la seconda variante è più probabile". Non c'è necessità pratica per tutti i valori diversi da questi. Il compilatore non sarà in grado di utilizzare tali informazioni.

Altri suggerimenti

qui :

molto __builtin_expect_with_probability

(lunga exp , lungo c , doppio probabilità ) La funzione ha stessa semantica __builtin_expect, ma fornisce chiamante la probabilità attesa che exp == c . Ultimo argomento probabilità è un valore che galleggia nel 0.0f gamma inclusivo e 1.0f.

Non il determinismo non è una caratteristica desiderabile per l'output del compilatore, lasciate caratteristiche del linguaggio da solo. Non v'è alcun reale beneficio per l'ottimizzazione solo parziale preferendo un ramo, e nessun compilatore io sappia può fare questo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top