C++
Résolu/Fermé
zouzouange
Messages postés
14
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
10 avril 2008
-
9 avril 2008 à 18:21
cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 - 9 avril 2008 à 22:02
cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 - 9 avril 2008 à 22:02
4 réponses
cchristian
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
131
9 avril 2008 à 18:59
9 avril 2008 à 18:59
Bonjour,
Pose tes questions même générales, on verra bien si quelqu'un peut t'aider.
Pose tes questions même générales, on verra bien si quelqu'un peut t'aider.
zouzouange
Messages postés
14
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
10 avril 2008
9 avril 2008 à 19:35
9 avril 2008 à 19:35
nan nan il né pas résolu
zouzouange
Messages postés
14
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
10 avril 2008
9 avril 2008 à 19:37
9 avril 2008 à 19:37
bah nan nan , lol , j devai mettre non résolu
cchristian
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
131
9 avril 2008 à 22:02
9 avril 2008 à 22:02
Bonsoir,
Inline
En ce qui concerne la fonction "inline" si on parle bien de la même chose, c'est assez simple. Il s'agit d'une instruction donnée au compilateur afin qu'il insert (au momoent de la compilation bien sûr) une copie de la fonction à chaque emplacement où la fonction est apellée et ce afin d'optimiser l'exécution (future) du programme concerné.
Lors de la phase d'éxécution la logique d'éxécution d'un programme déroule les instructions les unes après les autres, telles qu'elles ont été écrites. En terme d'optimisation, l'idéal pour le système serait qu'il n'y ait aucune rupture, aucun ordre de débranchement à une instruction autre que celle qui suit immédiatement celle qu'il est en train d'éxécuter.
Dans le cas d'une fonction chaque appel (disséminé si il y a plusieurs appels d'une même fonction dans le programme,) est une rupture, un débranchement de la séquence d'instructions en cours d'exécution vers celles de la fonction appelée. C'est évidemment du temps CPU de "pris" (de perdu) surtout si un appel (ou même plusieurs ) se trouve(nt) inscrit(s) dans une boucle ayant un grand nombres d'itérations.
forceinline :
Suivant les options de compilation en vigueur pour la compilation et suivant les compilateurs il n'est pas certain que le scénario précédent soit systématiquement réalisé. Pour obliger le compilateur à exécuter l'action malgré tout, il existe la fonction : forceinline laquelle se substitue évidemment à inline et qu'il convient d'utiliser à bon escient car dans le cas contraire il est possible d'obtenir, par un excès d'ajout de code, le résultat inverse de celui escompté c'est-à-dire une baisse de performance.
Code :
(force)inline int ma_fonction (char ................) {
Inline
En ce qui concerne la fonction "inline" si on parle bien de la même chose, c'est assez simple. Il s'agit d'une instruction donnée au compilateur afin qu'il insert (au momoent de la compilation bien sûr) une copie de la fonction à chaque emplacement où la fonction est apellée et ce afin d'optimiser l'exécution (future) du programme concerné.
Lors de la phase d'éxécution la logique d'éxécution d'un programme déroule les instructions les unes après les autres, telles qu'elles ont été écrites. En terme d'optimisation, l'idéal pour le système serait qu'il n'y ait aucune rupture, aucun ordre de débranchement à une instruction autre que celle qui suit immédiatement celle qu'il est en train d'éxécuter.
Dans le cas d'une fonction chaque appel (disséminé si il y a plusieurs appels d'une même fonction dans le programme,) est une rupture, un débranchement de la séquence d'instructions en cours d'exécution vers celles de la fonction appelée. C'est évidemment du temps CPU de "pris" (de perdu) surtout si un appel (ou même plusieurs ) se trouve(nt) inscrit(s) dans une boucle ayant un grand nombres d'itérations.
forceinline :
Suivant les options de compilation en vigueur pour la compilation et suivant les compilateurs il n'est pas certain que le scénario précédent soit systématiquement réalisé. Pour obliger le compilateur à exécuter l'action malgré tout, il existe la fonction : forceinline laquelle se substitue évidemment à inline et qu'il convient d'utiliser à bon escient car dans le cas contraire il est possible d'obtenir, par un excès d'ajout de code, le résultat inverse de celui escompté c'est-à-dire une baisse de performance.
Code :
(force)inline int ma_fonction (char ................) {
9 avril 2008 à 19:03
9 avril 2008 à 19:34