Le macro spesso conosciute come likelye le unlikelymacro aiutano il compilatore a sapere se di ifsolito verrà immesso o ignorato un. Usarlo comporta alcuni (piuttosto minori) miglioramenti delle prestazioni.
Ho iniziato a usarli di recente e non sono sicuro di quanto spesso debbano essere usati tali suggerimenti. Attualmente lo uso con controllo errori ifs, che di solito sono contrassegnati come unlikely. Per esempio:
mem = malloc(size);
if (unlikely(mem == NULL))
goto exit_no_mem;
Sembra ok, ma il controllo degli errori ifavviene abbastanza spesso e di conseguenza l'uso di tali macro.
La mia domanda è: è troppo avere likelye unlikelymacro su ogni controllo degli errori if?
Mentre ci siamo, in quali altri luoghi vengono spesso utilizzati?
Nel mio attuale utilizzo è in una libreria che fa un'astrazione dal sottosistema in tempo reale, quindi i programmi diventerebbero portatili tra RTAI, QNX e altri. Detto questo, la maggior parte delle funzioni sono piuttosto piccole e chiamano direttamente una o due altre funzioni. Molte sono persino static inlinefunzioni.
Quindi, prima di tutto, non è un'applicazione che potrei profilare. Non ha senso "identificare i colli di bottiglia" poiché è una libreria, non un'applicazione autonoma.
In secondo luogo, è un po 'come "So che è improbabile, potrei anche dirlo al compilatore". Non cerco attivamente di ottimizzare il if.
likelyed unlikelyesiste e cosa fanno. Non ho trovato nulla che suggerisca effettivamente quando e dove è meglio usarli.