Forcer 'inline' avec GCC ou ICC
J'ai un programme avec pleins de fonctions inlines et de templates imbriqués.
Il est essentiel que toutes (ou presque) les fonctions déclarées 'inline' soit réellement inlinées dans l'exécutable afin que la vitesse d'exécution soit correcte.
Je l'ai compilé sous Windows.NET, ça marche bien, il est rapide. Et si j'utilise '__forceinline' il est encore plus rapide.
Mais avec GCC 3.4 (Cygwin et Linux) ou ICC (Linux), il est environ 5 fois plus lent que sous Windows.
L'option '-Winline' de GCC me montre que beaucoups de functions ne sont pas inlinées comme il faudrait.
J'essaye de jouer sur les options de GCC, mais rien n'est satisfaisant pour l'instant.
-finline-limit
--param large-function-growth
--param max-inline-insns-single
...
Quelqu'un a des suggestions?