__builtin_expect de GCC avec une probabilité
-
11-10-2019 - |
Question
__builtin_expect
de GCC peut être utilisé par un programmeur pour montrer quelles variantes devraient être très souvent et qui sont rares. Mais __builtin_expect
ont seulement "vrai" et "faux" (0% ou 100% de probabilité)
Pour certains grands projets, il est difficile d'obtenir varient commentaires de profil (-fprofile-arcs
), et parfois programmeur ne sait, quelle probabilité de la branche, il a en quelque point de programme.
Il est possible de donner une indication au compilateur qu'une branche ont une probabilité> 0% et <100%?
La solution
Vrai et faux signifie vraiment que « la première variante est plus probable » et « la deuxième variante est plus probable ». Il n'y a pas besoin pratique pour toutes les valeurs autres que celles-ci. Le compilateur ne sera pas en mesure d'utiliser cette information.
Autres conseils
Non-déterminisme est pas un trait souhaitable pour la sortie du compilateur, sans parler des caractéristiques linguistiques. Il n'y a pas de véritable avantage pour que l'optimisation partielle préférant une branche, et aucun compilateur je connais peut le faire.