C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Comment forcer 'inline' avec GCC ou ICC ?

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French)
View previous topic :: View next topic  
Author Message
Patrick Laurent
Guest





PostPosted: Sun May 15, 2005 11:24 am    Post subject: Comment forcer 'inline' avec GCC ou ICC ? Reply with quote



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





PostPosted: Sat May 21, 2005 8:14 pm    Post subject: Re: Comment forcer 'inline' avec GCC ou ICC ? Reply with quote



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





PostPosted: Mon May 23, 2005 5:28 am    Post subject: Re: Comment forcer 'inline' avec GCC ou ICC ? Reply with quote



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





PostPosted: Mon May 23, 2005 9:57 am    Post subject: Re: Comment forcer 'inline' avec GCC ou ICC ? Reply with quote

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
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French) All times are GMT
Page 1 of 1

 
Jump to:  
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


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.