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

Affichage des résultats du sondage: Que pensez-vous du mot-clé inline aujourd'hui :

Votants
36. Vous ne pouvez pas participer à ce sondage.
  • c'est toujours d'actualité : je conseille de l'utiliser.

    16 44,44%
  • c'est devenu obsolète : à oublier !

    20 55,56%
Langage C++ Discussion :

Intérêt de "inline" de nos jours : pour ou contre ?


Sujet :

Langage C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut Intérêt de "inline" de nos jours : pour ou contre ?
    Bonjour,

    En ce moment je passe des entretiens et donc des tests techniques C++, et j'ai eu droit à une question sur "virtual inline". J'en ai profité pour glisser mon avis personnel au sujet de inline qui est en gros : ce n'est plus utile de nos jours. Maintenant, je me demande dans quelle mesure mon affirmation est valide.

    Je n'ai jamais été un grand fan de inline (explicite ou implicite), parce que de mon point de vue c'est une entorse aux bonnes pratiques (pas d'implémentation dans un header) du fait que, ben, on en avait besoin. Mais aujourd'hui - sans m'être sérieusement penché sur la question je l'avoue - j'estime que les compilateurs sont suffisamment évolués pour se débrouiller tout seuls, surtout avec l'apparition de l'optimisation guidée par profil (encore que j'ai eu des déceptions à ce sujet). Bref, je considère qu'inline relève de l'optimisation prématurée, pour ne pas dire de la pollution de code, et que c'est à oublier au même titre que register.

    Vos avis / retours d'expérience ?

  2. #2
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Idem, le compilateur fait très bien son boulot, s'il voit que la fonction a un intérêt en terme de quantité d'instructions à être inlinée, elle le sera, même si elle est en double.
    Ce qui est certain, c'est que quand mon code est inliné par le compilateur, je gagne un facteur 10 car tous les appels "simples" sont regroupés (c'était l'objectif au départ du programme).

  3. #3
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Citation Envoyé par Aurelien.Regat-Barrel Voir le message
    Bref, je considère qu'inline relève de l'optimisation prématurée, pour ne pas dire de la pollution de code, et que c'est à oublier au même titre que register.
    Ca résume très bien mon avis.

    Les compilos que j'utilise (celui de VC et gcc), en particulier VC au boulot, gèrent très bien ça. Je ne m'en soucie pas et considère ne pas avoir à m'en soucier. Cela fait partie de ce que l'on est en droit d'exiger d'un compilateur de nos jours.

    PS : ils comptaient vraiment t'avoir avec le coup du "virtual inline" ?

  4. #4
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    J'aurais bien aimé une troisième réponse au sondage : C'est inutile en général, mais on ne sait jamais.

    Tout ce que je sais, c'est que ça fait un bout de temps que je n'ai pas fait de micro-optimisations de code en général, car je n'en n'avait pas vraiment besoin. Inline rentre dans la catégorie micro-optimisation. Le jour où j'aurais à micro-optimiser, j'essayerai inline comme d'autre techniques, en mesurant le résultat. Je n'ai pas envie de le rejeter a priori, on ne sait jamais, mais il est clair que je ne l'utiliserais que de façon hyper ponctuelle...
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  5. #5
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 633
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 633
    Par défaut
    Salut,

    à défaut d'une possibilité plus nuancée, j'ai voté que c'est obsolète et à oublier...

    Surtout si l'idée est de créer... une fonction virtuelle

    Mais même en dehors de ce cas "peau de banane", je trouve que cela fait vraiment partie des optimisations prématurées tant il y a de restrictions au niveau du compilateur qui nous empêchent d'avoir la certitude que tous les appels à une fonction seront bel et bien inlinés
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  6. #6
    Membre très actif Avatar de metagoto
    Profil pro
    Hobbyist programmateur
    Inscrit en
    Juin 2009
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Hobbyist programmateur

    Informations forums :
    Inscription : Juin 2009
    Messages : 646
    Par défaut
    inline peut servir à ne pas avoir de multiples définitions de templates.

    Ca peut être utile aussi pour remplacer ce que l'on pourrait faire avec des macros. MACHIN(++x) --> machin(++x)

    OK pour laisser le compilo décider d'inliner ou non, mais OK aussi pour laisser le développeur placer des keywords inline qui vont bien dans certains cas.

  7. #7
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Citation Envoyé par metagoto Voir le message
    Ca peut être utile aussi pour remplacer ce que l'on pourrait faire avec des macros. MACHIN(++x) --> machin(++x)
    Le compilateur fait ça bien mieux que toi, je ne vois l'intérêt de lui forcer ça !
    Pour les templates, c'est idem, il inline automatiquement quand c'est possible/intéressant pour ton processeur.

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