J'ai actuellement des fonctions en ligne appelant une autre fonction inline (une simple fonction 4 lignes getAbs()
). Cependant, j'ai découvert en regardant le code assembleur que les "grandes" fonctions en ligne sont bien intégrées, mais le compilateur utilise un saut bl
pour appeler la fonction getAbs()
.en ligne une fonction à l'intérieur d'une autre fonction inline en C
Est-il impossible d'intégrer une fonction dans une autre fonction en ligne? Soit dit en passant, il s'agit d'un code intégré, nous n'utilisons pas les bibliothèques standard. Edit: Le compilateur est WindRiver, et j'ai déjà vérifié que inlining serait bénéfique (4 instructions au lieu de + -40).
Quel compilateur utilisez-vous? Il y a souvent des façons de forcer l'inlining. Je suppose que vous avez déjà profilé votre code et êtes plutôt confiant que l'inline sera bénéfique. Dans GCC, ceci peut être fait avec __attribute __ ((always_inline)). – stinky472
Puis-je vous demander pourquoi vous vous souciez des décisions prises par le compilateur? Avez-vous profilé le code et trouvé le surcoût de cette instruction de saut est en train de tuer la performance? – JeremyP