lang:cpp:attribut
Ceci est une ancienne révision du document !
Les attributs ci-dessous sont standards et supportés par l'ensemble des compilateurs.
[[unlikely]] et [[likely]]
Il est possible d'indiquer au compilateur si une condition est généralement vraie ou fausse. Cela fonctionne sur if
et case
.
int i = 1; if (i == 1) [[likely]] ...
int f(int i) { switch(i) { case 1: return 1; [[likely]] case 2: return 2; [[unlikely]] default: return 3; } return 2; }
- Code généré sans les attributs
[[likely]]
et[[unlikely]]
.
gcc est utilisé et les options d'optimisation doivent être activées au minimum niveau 1.
f(int): mov eax, edi cmp edi, 1 je .L2 cmp edi, 2 mov edx, 3 cmovne eax, edx .L2: ret
- Code généré avec les attributs
[[likely]]
et[[unlikely]]
f(int): mov eax, edi cmp edi, 1 je .L2 cmp edi, 2 jne .L8 .L2: ret .L8: mov eax, 3 ret
lang/cpp/attribut.1592301649.txt.gz · Dernière modification : 2020/06/16 12:00 de root