Fonction inline

Signaler
Messages postés
39
Date d'inscription
mercredi 25 août 2004
Statut
Membre
Dernière intervention
13 novembre 2004
-
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
-
Pouvez vous me dire l'interet des fonctions inline:
Ce que je sais:
A la place d'un appel de la fonction ,le compilateur recopie
le code de la fonction:
Quelle difference pour le programmeur
MERCI ,bonne prog

12 réponses

Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
aucune, d'autant plus qu'elle sera inliner selon le bon vouloir du compilateur

il est inutile d'inliner une fonction recursive et une fonction appelé par un pointeur
Messages postés
1160
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
21 octobre 2010
17
l'interet est : performance. si ta fonction est grosse, et appelée tres peu souvent, tu peux la mettre en inline (sinon gare a la place de l'exe). si elle est petiten genre "juste retourner un int", autant la mettre en inline, l'execution sera plus rapide.
le compilateur a le droit de ne pas inliner certaines fonctions. certaines ne le seront jamais : les fonction recursives, les fonction contenant des boucles, etc. je connais pas ttes les condition exactement....
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
Une fonction avec boucle peut tout a fait passer en inline, suffit de regarder la sortie asm du compilo pour s'en convaincre.
VS possede aussi des options de compilation a cet effet.

ciao...
BruNews, Admin CS, MVP VC++
Messages postés
1160
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
21 octobre 2010
17
ca c'est au bon vouloir du compilo....certains compilo ne permettront pas certaines fonctions avec boucle de passer en inline..
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
hormis les funcs recurrentes, sur VS 2003 on peut TOUT forcer en inline.

ciao...
BruNews, Admin CS, MVP VC++
Messages postés
1160
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
21 octobre 2010
17
pr VS 2003 je savais pas, mais jfk n'est peut-etre pas sous VS 2003, il vaut mieux qu'il connaisse les regles generales que comment marche visual 2003 qui n'est peut-etre meme pas son compilo.......
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
Ils y viendront tous (les compilos), vitesse oblige.

ciao...
BruNews, Admin CS, MVP VC++
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
sous gcc aucun probleme egalement, et en generale les petite fonction sont inliner implicitement, avec les optimisations qui vont avec
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
Oui c'etait couru comme affaire, les petits blocs ne sont jamais conserves, ça evite les empilages.
Sur VS, il y a une option a cocher si on veut garder les fonctions intrinseques, c'est tout dire qu'il previent des substitutions.

ciao...
BruNews, Admin CS, MVP VC++
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
sous gcc on peut egalement limiter l'inlining des fonctions en fonction de leur taille
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
Tout cela est devenu standard et comme d'hab les 'standards' seront adaptes avec un train de retard, tout comme nos generaux etaient toujours en retard d'une guerre.

ciao...
BruNews, Admin CS, MVP VC++
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
c'est parfois les compilos qui sont en retard sur les standards

en fait chaque compilos possede ses particularités (souvent son propre runtime), gcc possede meme son extension du langage c qui autorise l'imbrication de fonctions