Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1744 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  fonction "inline"

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

fonction "inline"

n°905953
Sve@r
Posté le 23-11-2004 à 19:08:53  profilanswer
 

Bonjour à tous,
j'aimerais connaître l'avantage et les inconvénients à mettre des fonctions "inline".
 
Il me semble avoir lu qq part que si une fonction ne peut pas être "inline" (style parce que trop grosse) elle ne le sera pas même si l'ordre de la mettre "inline" y est. Cette caractéristique m'autorise-t-elle à tout déclarer "inline" et laisser le compilo décider lui-même quoi mettre et quoi ne pas mettre "inline" ?


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
mood
Publicité
Posté le 23-11-2004 à 19:08:53  profilanswer
 

n°905965
Taz
bisounours-codeur
Posté le 23-11-2004 à 19:20:09  profilanswer
 

l'avantage: ben c'est dans la définition : le corps de la fonction peut-être substitué à l'appel.
 
Si la fonction est très courte (en terme d'instruction) cela permet un gain, car on économise le surcout de l'appel de fonction.
 
exemple

Code :
  1. inline int negate_it(int i) { return -i; }


 
seulement si ta fonction que tu inlines est trop grosse, tu n'a plus de gain et ton exécutable prend du poids (multiples définitions de ta fonction. également, dans le cadre d'une bibliothèque, les fonctions inline sont plus difficiles à gérer en ce qui concerne l'API et l'ABI

n°905967
blackgodde​ss
vive le troll !
Posté le 23-11-2004 à 19:21:26  profilanswer
 

tout d'abord le fait de marquer une fonction inline n'est pas un ordre au compilo, c'est un conseil.
 
l'inlining consiste a "copier" le contenu de la fonction partout ou elle sera appelée au lieu de la mettre a un seul endroit et de l'appeler.
 
L'avantage majeur (il y en a p-e d'autres) : la rapidité
L'inconvenient majeur (pareil) : la taille du code


---------------
-( BlackGoddess )-
n°905970
Joel F
Real men use unique_ptr
Posté le 23-11-2004 à 19:22:06  profilanswer
 
n°905971
Taz
bisounours-codeur
Posté le 23-11-2004 à 19:22:32  profilanswer
 

bref : non, ne mets inline que si tu en as besoin. Dans une première phase de développement, tu peux carrément faire sans inline, tu pourras revenir dessus plus tard après une première évaluation des performances

n°906016
Kristoph
Posté le 23-11-2004 à 20:41:10  profilanswer
 

BlackGoddess a écrit :

tout d'abord le fait de marquer une fonction inline n'est pas un ordre au compilo, c'est un conseil.
 
l'inlining consiste a "copier" le contenu de la fonction partout ou elle sera appelée au lieu de la mettre a un seul endroit et de l'appeler.
 
L'avantage majeur (il y en a p-e d'autres) : la rapidité
L'inconvenient majeur (pareil) : la taille du code


Notez que code plus grand => code plus lent à cause des problèmes de cache mémoire.

n°906027
Panini
Posté le 23-11-2004 à 20:50:53  profilanswer
 

La mise en inline est une phase d'opti comme ça a été dit, sauf cas trivial. Si tu mets d'emblée en inline, tu es obligé de fournir la définition de ta fonction dans un .h et tu recompiles donc beaucoup plus de code à chaque modification, ce qui est pénible.

n°906131
Sve@r
Posté le 23-11-2004 à 22:44:54  profilanswer
 

Ok - Merci à tous. J'ai compris des trucs
 
PS: Le lien cité par "Joel F" http://www.parashift.com/c++-faq-l [...] tions.html ne fonctionne pas actuellement...


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°906132
Joel F
Real men use unique_ptr
Posté le 23-11-2004 à 22:46:25  profilanswer
 

Si, j'en viens [:autobot]

n°906133
cris56
Posté le 23-11-2004 à 22:48:11  profilanswer
 
mood
Publicité
Posté le 23-11-2004 à 22:48:11  profilanswer
 

n°908752
Sve@r
Posté le 26-11-2004 à 19:00:21  profilanswer
 

Joel F a écrit :

Si, j'en viens [:autobot]


Argh, c'est mon firewall qui me bloquait ce lien !!![:autobot][:autobot]
Ok thx all

n°908820
HelloWorld
Salut tout le monde!
Posté le 26-11-2004 à 21:00:49  profilanswer
 

inline est ignoré par certains compilos, et certains arrivent même à s'en passer (inlining depuis le fichier objet). Son utilité est un peu celle de register il y a quelques années. De même que register ne sert plus à rien aujourd'hui, inline sera bientôt inutile.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°908826
Taz
bisounours-codeur
Posté le 26-11-2004 à 21:20:52  profilanswer
 

sans doute, mais aujourd'hui, c'est loin d'être inutile. À part le compilateur d'intel, je ne connais rien d'autre qui fasse ça tout seul. Et c'est très dépendant de l'heuristique employée. Donc je pense pas que ça soit inutile. Cela dit, tu peux avoir une approche 'j'inline rien' sans problème : y a des tas de langages sur VM (perl, java, python, etc) ou la notion d'inline n'existe pas et ils vivent sans.

n°908838
HelloWorld
Salut tout le monde!
Posté le 26-11-2004 à 21:37:09  profilanswer
 

Les langages sur VM c'est différent, et c'est là qu'ils peuvent être plus performants que des langages compilés car ils savent mieux inliner.
Pour les compilos C++ inlineurs y'a VC++ aussi, en compilant avec l'option "whole optimization" (/GL).
http://www.microsoft.com/france/ms [...] ation.html
http://www.codeproject.com/tips/gloption.asp


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°908886
Taz
bisounours-codeur
Posté le 26-11-2004 à 22:28:58  profilanswer
 

même, de toutes façons, inline porte aussi la notion de définition locale à l'unité de compilation

n°908923
HelloWorld
Salut tout le monde!
Posté le 26-11-2004 à 23:27:32  profilanswer
 

Moui... et ça apporte quoi ?
Ce que je voulais dire jusque là c'est que inline généralement c'est des économies de bouts de chandelles, c'est rare que ça ait un impact mesurable. En revanche ça pourri bien le fichier .h et moi c'est ce qui me gêne.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°908927
Lam's
Profil: bas.
Posté le 26-11-2004 à 23:31:33  profilanswer
 

Nan, ça change énormément de choses l'inlining. Tu économises la génération des cadres de piles, les call/ret, et tu peux optimiser en interne.  
 
On a fait des tests au boulot sur Forte entre "-g -xO3" et "-g0 -xO3" (autorise l'inlining du debug). C'était entre 40 et 50% plus rapide.

n°908930
HelloWorld
Salut tout le monde!
Posté le 26-11-2004 à 23:33:31  profilanswer
 

l'inlining fait par le compilo ou l'utilisation du mot clé inline ?


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°908933
Lam's
Profil: bas.
Posté le 26-11-2004 à 23:35:21  profilanswer
 

HelloWorld a écrit :

l'inlining fait par le compilo ou l'utilisation du mot clé inline ?


Fait par le compilo. Quoique j'ai pas regardé, mais la STL qu'on utilisait devait être truffée de inline.


Message édité par Lam's le 26-11-2004 à 23:35:33
n°908934
Taz
bisounours-codeur
Posté le 26-11-2004 à 23:35:22  profilanswer
 

le mot clef inline.

n°908935
Taz
bisounours-codeur
Posté le 26-11-2004 à 23:36:04  profilanswer
 

(surtout sur une architecture ou on a plein de registres, ça donne vraiment gavé de d'accélération)

n°908936
HelloWorld
Salut tout le monde!
Posté le 26-11-2004 à 23:41:16  profilanswer
 

Heu faudrait se mettre d'accord. Moi je dit que l'inlining géré par le compilo est assez bien pour ne pas s'emmerder avec le mot clé inline.
 
En plus qui dit STL dit template donc dit code source dans le .h donc dit pas besoin de inline :o


Message édité par HelloWorld le 26-11-2004 à 23:42:24

---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°908939
Taz
bisounours-codeur
Posté le 26-11-2004 à 23:44:29  profilanswer
 

mais les deux sont utiles, mais il faut se métier du compilateur qui peut t'inliner des fonctions à la con non-critiques et faire péter ton segment de texte. Le tout, c'est de maitriser à peu près le phénomène

n°916762
Jhon1
Posté le 07-12-2004 à 10:57:49  profilanswer
 

Bonjour, Je travail sur matlab et je ne commais rien sur C++
le probleme je viens de recevoir un programme sur c++ et je veux le transformer en point .m pour pouvoir l utiuliser sur matlab
si possible de votre part, merci de me comminiquer votre adress mail, je vous enverais en piece jointe le program
merci A+

n°916765
Joel F
Real men use unique_ptr
Posté le 07-12-2004 à 11:01:19  profilanswer
 

le rapport avec la choucroute ???

n°916767
HelloWorld
Salut tout le monde!
Posté le 07-12-2004 à 11:02:39  profilanswer
 

Et pour le cheque on te donne notre adresse par mail aussi ?


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°916771
Jhon1
Posté le 07-12-2004 à 11:04:49  profilanswer
 

Je travail un peut sur matlab, besoin d aide
Je suis en train de traiter des images en 2D. (0-255)
 
L objectif est de contourner les lignes de hautes intensites a l interieur de l image. Je sais qu on peux utiliser la fonction contour, mais ca ne marche pas bien, car les lignes que je trouves restes trop vaques et la localisation n est pas facile.
Si quelqu un peux m aider a trouver et localiser les lignes de hautes intensite a linterieur des ces images ?
merciA+
 

n°916808
cricri_
Posté le 07-12-2004 à 11:25:43  profilanswer
 

Fait un post à part STP, car ça n'a strictement rien à voir avec le sujet d'origine ...
Et un conseil soit plus clair que ça ...

n°916916
Jhon1
Posté le 07-12-2004 à 13:17:19  profilanswer
 

OK, There
This how it works (Mr, Cricri and Hello world), I believe that you are very intelligent French gay. I am sorry I am anatomist and I am not sure that you can understand what I am doing neither, However if you ask me advices I will be for sure nice to you> Anyway I don’t need your helps> Many thanks
 

n°916922
yulara
Byte Hunter
Posté le 07-12-2004 à 13:21:08  profilanswer
 

ils te disent juste de créer un nouveau sujet pour ton probleme car il n'a rien à voir avec ce dont ils discutent :spamafote:


---------------
Quizz'n'Blind pour tester vos connaissances
n°916930
Taz
bisounours-codeur
Posté le 07-12-2004 à 13:27:24  profilanswer
 

Jhon1 a écrit :

OK, There
This how it works (Mr, Cricri and Hello world), I believe that you are very intelligent French gay. I am sorry I am anatomist and I am not sure that you can understand what I am doing neither, However if you ask me advices I will be for sure nice to you> Anyway I don’t need your helps> Many thanks

ta chatte :o

n°916941
HelloWorld
Salut tout le monde!
Posté le 07-12-2004 à 13:33:56  profilanswer
 

Citation :

I believe that you are very intelligent French guy


[:aloy]
 
Tu veux savoir comment ça fonctionne ? Ben c'est un forum : tu crées un sujet, les gentils gens collaborent et t'aident à le faire. Poster sa question à la suite d'une autre en demandant à quelqu'un de le faire à ta place par mail c'est pas très bien vu.
Et c'est un forum francophone, ça veut dire qu'on discute en français, mais pas forcément entre français. Y'a des belges, des suisses, des québéquois ici.


Message édité par HelloWorld le 07-12-2004 à 13:35:42

---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°916950
antp
Super Administrateur
Champion des excuses bidons
Posté le 07-12-2004 à 13:38:54  profilanswer
 

c'est quoi ce bordel ici :heink:


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°916955
gilou
Modérateur
Modzilla
Posté le 07-12-2004 à 13:40:22  profilanswer
 

HelloWorld a écrit :

Citation :

I believe that you are very intelligent French guy


[:aloy]
 
Tu veux savoir comment ça fonctionne ? Ben c'est un forum : tu crées un sujet, les gentils gens collaborent et t'aident à le faire. Poster sa question à la suite d'une autre en demandant à quelqu'un de le faire à ta place par mail c'est pas très bien vu.
Et c'est un forum francophone, ça veut dire qu'on discute en français, mais pas forcément entre français. Y'a des belges, des suisses, des québéquois ici.


Là, il vient d'apprendre comment fonctionne le TT...
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
mood
Publicité
Posté le   profilanswer
 


Aller à :
  FORUM HardWare.fr
  Programmation
  C++

  fonction "inline"

 

Sujets relatifs
retour erreur de la fonction php mail()[Perl] fonction sysread
Pb avec ma fonction récursiveRendre une fonction generalisable...
Mettre une table à jour en fonction d'une autre de referencetry/catch et retour de fonction
pb avec la fonction ob_start()Fonction mail()
utilisation fonction perso sous excelfonction exponentielle mauvais résultat
Plus de sujets relatifs à : fonction "inline"


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR