Outils pour utilisateurs

Outils du site


lang:cpp:attribut

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
lang:cpp:attribut [2020/06/16 12:00] – Mise en forme pour faciliter la lecture rootlang:cpp:attribut [2020/07/18 23:54] (Version actuelle) – code -> gh root
Ligne 4: Ligne 4:
 Il est possible d'indiquer au compilateur si une condition est généralement vraie ou fausse. Cela fonctionne sur ''if'' et ''case''. Il est possible d'indiquer au compilateur si une condition est généralement vraie ou fausse. Cela fonctionne sur ''if'' et ''case''.
  
-<code cpp> +{{gh>https://github.com/bansan85/wiki_le_garrec_fr/blob/master/cpp/attribute/un-likely1.cpp}}
-int i = 1; +
-if (i == 1) [[likely]] +
-  ... +
-</code>+
  
-<code cpp> +^Avec attributs^Sans attribut^ 
-int f(int i) +|{{gh>https://github.com/bansan85/wiki_le_garrec_fr_travis/blob/master/cpp/attribute/unlikely1.cpp.asm}}|{{gh>https://github.com/bansan85/wiki_le_garrec_fr_travis/blob/master/cpp/attribute/unlikely2.cpp.asm}}|
-{ +
-  switch(i) +
-  { +
-    case 1return 1; +
-    [[likely]] +
-    case 2: return 2; +
-    [[unlikely]] +
-    default: return 3; +
-  } +
-  return 2; +
-} +
-</code>+
  
-  * Code généré sans les attributs ''%%[[likely]]%%'' et ''%%[[unlikely]]%%''.+<WRAP center round info 60%> 
 +On voit que le code est différent pour le ''switch''/''case'' mais pas pour le ''if''/''then''/''else''. 
 +</WRAP>
  
-gcc est utilisé et les options d'optimisation doivent être activées au minimum niveau 1. 
  
-<code asm> 
-f(int): 
-  mov     eax, edi 
-  cmp     edi, 1 
-  je      .L2 
-  cmp     edi, 2 
-  mov     edx, 3 
-  cmovne  eax, edx 
-.L2: 
-  ret 
-</code> 
- 
-  * Code généré avec les attributs ''%%[[likely]]%%'' et ''%%[[unlikely]]%%'' 
- 
-<code asm> 
-f(int): 
-  mov     eax, edi 
-  cmp     edi, 1 
-  je      .L2 
-  cmp     edi, 2 
-  jne     .L8 
-.L2: 
-  ret 
-.L8: 
-  mov     eax, 3 
-  ret 
-</code> 
lang/cpp/attribut.1592301649.txt.gz · Dernière modification : 2020/06/16 12:00 de root