 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Patrick Laurent Guest
|
Posted: Sun May 15, 2005 11:24 am Post subject: Comment forcer 'inline' avec GCC ou ICC ? |
|
|
Salut, c'est la première fois que je poste ici.
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 déjà compilé avec ICL (Intel Compiler) sous Visual 7.1, ça marche
bien, il est rapide. Et quand j'utilise '__forceinline' il est encore un peu
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 pour forcer 'inline'? ou du moins augmenter
considérablement la limite que GCC et ICC se fixent.
|
|
| Back to top |
|
 |
tonio Guest
|
Posted: Sat May 21, 2005 8:14 pm Post subject: Re: Comment forcer 'inline' avec GCC ou ICC ? |
|
|
| Quote: | Quelqu'un a des suggestions pour forcer 'inline'? ou du moins augmenter
considérablement la limite que GCC et ICC se fixent.
|
Bonjour,
gcc 3.4 a effectivement l'air d'ignorer les inline sans option
d'optimisation particulière.
Par contre, avec -O1 sur la ligne de commande, il semble les prendre
d'avantage en considération...
|
|
| Back to top |
|
 |
Erwann ABALEA Guest
|
Posted: Mon May 23, 2005 5:28 am Post subject: Re: Comment forcer 'inline' avec GCC ou ICC ? |
|
|
Bonjour,
On Sat, 21 May 2005, tonio wrote:
| Quote: | Quelqu'un a des suggestions pour forcer 'inline'? ou du moins augmenter
considérablement la limite que GCC et ICC se fixent.
gcc 3.4 a effectivement l'air d'ignorer les inline sans option
d'optimisation particulière.
Par contre, avec -O1 sur la ligne de commande, il semble les prendre
d'avantage en considération...
|
Sinon, pour forcer l'inline, on peut passer par l'attribut
"always_inline":
info gcc --index-search="function attributes"
--
Erwann ABALEA <erwann (AT) abalea (DOT) com> - RSA PGP Key ID: 0x2D0EABD5
-----
On Unix and Unix Hackers
``The problem here is that there is parent and child but no adult.''
Lynne Jolitz
|
|
| Back to top |
|
 |
Patrick Laurent Guest
|
Posted: Mon May 23, 2005 9:57 am Post subject: Re: Comment forcer 'inline' avec GCC ou ICC ? |
|
|
Merci pour vos réponses
| Quote: | Par contre, avec -O1 sur la ligne de commande, il semble les prendre
d'avantage en considération...
J'avais bien entendu déjà essayé depuis longtemps, même avec -O2 ou -O3 |
| Quote: | Sinon, pour forcer l'inline, on peut passer par l'attribut
"always_inline":
J'avais aussi essayé. |
J'avais écris cette macro tout au début du programme: #define inline
__attribute__((__always_inline__)).
Mais l'option '-Winline' me montre que beaucoup trop de fonctions ne sont
pas encore inlinées.
Il semblerait que cet attribut permette d'inliner une fonction plutôt qu'une
autre.
Mais si toutes les fonctions sont marquées 'always_inline', GCC ne les
inline pas toutes si pour une quelconque raison (fonction trop
volumineuse...) il estime qu'il ne faut pas l'inliner.
Et cerise sur le gâteau, il y a aussi des erreurs bizarres, GCC dit qu'il
est "désolé"!. Par exemple:
sorry, unimplemented: inlining failed in call to '...': function not
inlinable
sorry, unimplemented: called from here...
suggestions?
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|