Pregunta

__builtin_expect de GCC puede ser utilizado por el programador para mostrar que se espera que las variantes a ser muy a menudo y que son raros. Pero __builtin_expect sólo tienen "verdadero" y "falso" (0% o 100% de probabilidad)

Para algunos proyectos grandes es difícil variar para obtener retroalimentación de su perfil (-fprofile-arcs), y, a veces programador conoce, lo que la probabilidad de la rama que tiene en algún punto del programa.

Es posible dar una pista para compilador que una rama tiene probabilidad> 0% y <100%?

¿Fue útil?

Solución

El verdadero y falso en realidad quieren decir que "la primera variante es más probable" y "la segunda variante es más probable". No hay necesidad práctica de cualquiera de los valores distintos de estos. El compilador no será capaz de utilizar esa información.

Otros consejos

aquí :

los __builtin_expect_with_probability

(largo exp , largo c , doble probabilidad ) La función tiene misma semántica que __builtin_expect, pero la persona que llama proporciona la probabilidad esperada de que exp == c . Último argumento probabilidad es un valor flotante en el rango inclusivo y 0.0f 1.0f.

No-determinismo no es un rasgo deseable para la salida del compilador, las características del lenguaje deja solos. No hay ningún beneficio real para la optimización solamente parcial preferir una rama, y ??ningún compilador Soy consciente de que puede hacer esto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top