IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Fonctions inline


Sujet :

C++

  1. #1
    Membre averti Avatar de vdumont
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 510
    Points : 369
    Points
    369
    Par défaut Fonctions inline
    Question simple sur les questions inline, est-ce qu'il est préférable de les utiliser pour les fonctions de base GET (exemple: getQuelqueChose())
    ??

    Exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     // Retourne le tableau de couleurs des noeuds
    inline const double* GetRGBNoeuds() const { return m_RGBNoeuds; }      
     
    // Retourne la valeur du glPolygonOffset
    inline double GetPolygonOffset() { return m_polygonOffset; }
    Ou serait-il préférable de les déclarer et les implémenter dans un le .cpp

    J'ai lu la FAQ mais je suis encore indécis.

  2. #2
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Coucou

    Pour des fonctions aussi simple que celles là... il serait je pense judicieux d'utiliser inline en effet...

    cependant si ton compilateur est bien configuré, il fait de lui même le choix des fonctions qui sont inlinées et celles qui ne le sont pas...

    le inline est là pour donner un conseil au compilo, pas un ordre

    c'est du style "je pense que ça serait mieux si cette fonction était inlinée, mais ensuit c'est toi qui gère "
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  3. #3
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Bof... A moins que tu aies constaté que ces appels de fonction étaient le goulot d'étranglement de ton appli, il n'y a pas de raison de les mettre inline.

  4. #4
    Membre habitué Avatar de BigNic
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 195
    Points : 154
    Points
    154
    Par défaut
    Citation Envoyé par Laurent Gomila
    Bof... A moins que tu aies constaté que ces appels de fonction étaient le goulot d'étranglement de ton appli, il n'y a pas de raison de les mettre inline.
    Je suis pas d'accord avec toi Laurent, pour des accesseurs en lecture (Get) qui font juste un return, de manière générale, il vaut mieux les mettres en inline. D'ailleurs même il vaut mieux les implémenter directement dans la déclaration de la classe, ce qui évite d'avoir à préciser au compilo qu'elles sont inline et aussi de se prendre la tête avec d'éventuel fichier .inl(ou autre).
    En fait le il n'y a qu'un seul risque mettre des fonctions en inline, c'est que le compilo remplace l'appel de la fonction par son propre code machine (à la fonction pas au compilo). Donc plus il y a d'appels plus le code de l'exécutable va grossir. Or quand il aura atteint une certaine limite (définit par le systéme sur lequel is s'exécute), le système ne le chargera plus entièrement en mémoire, donc perte de perf à l'exécution ce que l'on voulait éviter.
    Mais dans le cas de petites fonctions (ex: un simple return) le code machine de la fonction est inférieur au code machine généré par le compilo pour faire appel à une fonction. Donc dans le cas de Get quasiment à coup sur. Pour les autres cas il faut réfléchir avant de le faire.

  5. #5
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Oui ça se défend, mais dans l'absolu je ne vois pas ce qu'on y gagne à faire ainsi. Je vois par contre ce qu'on y perd : on fourre du code dans la déclaration de la classe ; il y en a beaucoup que ça ne gênera pas, moi si

  6. #6
    Membre averti Avatar de vdumont
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 510
    Points : 369
    Points
    369
    Par défaut

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Fonctions inline imbriquées
    Par pelotudo dans le forum MATLAB
    Réponses: 2
    Dernier message: 16/03/2007, 21h16
  2. Instanciation dans une fonction inline
    Par mister3957 dans le forum C++
    Réponses: 5
    Dernier message: 04/03/2007, 19h27
  3. Réponses: 7
    Dernier message: 12/11/2006, 12h49
  4. Fonction Inline ?
    Par dimmu dans le forum C++
    Réponses: 25
    Dernier message: 25/08/2006, 14h51
  5. Fonctions inlines et fichiers .lib
    Par michhh dans le forum C++
    Réponses: 3
    Dernier message: 05/07/2005, 03h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo