compilation d'un inline ? - C++ - Programmation
Marsh Posté le 14-10-2003 à 14:48:20
ReplyMarsh Posté le 14-10-2003 à 14:51:26
(c'est plus les balises 'code' pour colorer le code ?)
ca dépend de quoi ? du compilo ?
Marsh Posté le 14-10-2003 à 14:55:47
cpp
ouais ca depend du compilo, du mode compilation (debug / release...). Rien ne force le compilo a faire de l'inline, mais bon, n'importe quel compilo decent inlinera ca
Marsh Posté le 14-10-2003 à 15:01:24
Les derniers compilos proposent d'inliner comme ils veulent, en ignorant le mot clé inline.
Marsh Posté le 14-10-2003 à 15:04:40
avec le mot cle "inline" (et les fonctions definies dans les header), VC fait une sorte de calcul pour savoir si l'inline vaut le coup. Tu peux "bypasser" (desolé) ce calcul via __forceinline (qui donc, forcera l'inline (quand c'est possible bien sur))
(aucune idee du support de ce mot cle sur les autres compilo, don't tape on my tete)
Marsh Posté le 14-10-2003 à 15:32:24
merci pour cette précision
Marsh Posté le 14-10-2003 à 16:07:29
mais bon faut pas faire de la parano : si le inline te parait justifier et qu'il a un sens, ton compilo suivra ta directive. pas de soucis, ne remplaces jamais un une fonction par une macro ou le code lui même parce que t'as peur que ton compilo ne fassent pas le boulot
Marsh Posté le 14-10-2003 à 16:15:13
Taz a écrit : mais bon faut pas faire de la parano : si le inline te parait justifier et qu'il a un sens, ton compilo suivra ta directive. pas de soucis, ne remplaces jamais un une fonction par une macro ou le code lui même parce que t'as peur que ton compilo ne fassent pas le boulot |
Comment ca se fait qu'une fonction inline soit plus rapide ?
Marsh Posté le 14-10-2003 à 16:19:22
iS@mi a écrit : |
c'est tout un debat ca
l'appel de fonction est supprimé (en clair, le code la fonction est recopié par le compilo a l'endroit de l'appel)
Cela a un gain interessant quand le coup de l'appel de fonction est superieur au temps de traitement de la fonction (typiquement un accesseur)
Par contre si la fonction est trop longue certains pensent que tu noie le cache de code de ton CPU ruinant par la meme ton but (et en plus ton exe devient + gros)
Marsh Posté le 14-10-2003 à 16:20:13
iS@mi a écrit : |
Par ce que le code de la fonction est, en gros, recopié à l'endroit de l'appel ce qui te permet d'économiser sur les mécanismes d'appel de fonctions.
Arf
Marsh Posté le 14-10-2003 à 16:31:08
chrisbk a écrit : |
En gros le code de l'inline est directement injecté dans celui de la fonction où il est utilisé, ce qui évite d'aller le chercher et donc de perdre du temps ?
Mais si j'utilise un exemple 100 fois ce même inline, il sera recopié 100x dans l'application ?
Marsh Posté le 14-10-2003 à 16:33:03
iS@mi a écrit : |
Oui.
Marsh Posté le 14-10-2003 à 16:54:20
chrisbk a écrit : |
significatif par rapport au temps d'execution de la fonction est plus correct.
note du modérateur : inline se traduit par "Insertion sur place" ce qui est très explicite (si tant est)
Marsh Posté le 14-10-2003 à 14:47:11
est-ce que, apres compilation,
sera pareil que
?
---------------
-( BlackGoddess )-