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 :

Performances, stabilité et maintenance en C++


Sujet :

C++

  1. #1
    Membre averti Avatar de xxiemeciel
    Inscrit en
    Juin 2005
    Messages
    371
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 371
    Points : 352
    Points
    352
    Par défaut Performances, stabilité et maintenance en C++
    Bonjour,

    je cherche des articles serieux sur les performances du C++ en particulier lorsqu'il faut faire des compromis entre performances et stabilité (ou maintenance).

    Les performance de déréférences, du nombre de parametres, des appels de fonction, de la virtualité, des templates.

    Cordialement
    Vincent
    XXiemeciel

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Août 2003
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 247
    Points : 276
    Points
    276
    Par défaut
    Tu me fais peur... Crois-tu qu'il y a un compromis à faire entre performance et stabilité ? Ah moins que tu travaille chez Microsoft ;-).

    Plus sérieusement, la meilleure façon de savoir quelles sont les opérations coûteuses en les optimisations intéressantes, c'est de connaître un peu le langage assembleur de sa machine. Sans oublier, bien sûr, de savoir ce que fait le compilateur.

    Tu comprendras alors (si ce n'est pas déjà compris) pourquoi :
    - Une déréférence ne coute presque rien.
    - Plus la taille des arguments est petite, mieux c'est.
    - Un appel de fonction est un peu coûteux. Soigner l'inlining est très intéressant.
    - La virtualité est un peu coûteuse car elle empèche l'inlining et oblige à des déréférencements en cascade.
    - Les templates ne coûtent rien. C'est du tout bon. Juste des temps de compilations qui peuvent s'allonger.
    - Les macros c'est pas mieux que les const int, que les pointeurs c'est pas mieux que les références, etc.

    Et surtout tu comprendras pourquoi il faut mettre la partie la plus fréquente du if en première. Et ça, c'est vraiment essentiel.

    Enfin, tu finira sans doute par comprendre (si ce n'est pas déjà compris) que avec 3Ghz et 1 Go de RAM sous le capot que le compromis doit être plus favorable à la maintenance qu'a la performance.

  3. #3
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Tu as un fil sur la rapidité en C++ il me semble.
    J'avais donné un lien vers le document n1359 (brouillon) sur le site du commité de standardisation. Entre temps, il y a eu la version finale n1666.

    Commence par ça. Cela éliminera les a priori et autres rumeurs qui ne manqueront pas de surgir dans ce fil de discussion. -- genre la virtualité qui ne coute pas plus que mettre en oeuvre le "branchage" retardé avec des façon plus ... C.

    Ensuite, tu as les docs de tes compilos. Tous ne sont pas égaux devant les possibilités d'optimisations.

    Mais dans tous les cas, ce sont la maintenance et la "sûreté" qui priment. Foncer dans un mur ne sert à rien.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  4. #4
    Membre averti Avatar de xxiemeciel
    Inscrit en
    Juin 2005
    Messages
    371
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 371
    Points : 352
    Points
    352
    Par défaut
    Merci de vos reponses,

    ca confirme en partie ce que je savais deja, cependant je travail sur des programmes assez ancien et le melange de code templates avec des codes non templates pose souvent de gros problemes de compatibilites (sinon j'aurais deja mis des templates partout ).

    Au niveau des performances nous devons parfois faire un compromis, il est vrai que j'ai dit stabilité mais je pensais maintenance (on utilise le terme de stabilité pour dire qu'on remet des anciens code sous forme objet beaucoup plus simple a reutiliser et maintenir)

    Enfin et c'est la sujet que je souhaitais aborder, certaines personnes de ma compagnie de la vieille ecole comme on dit nous pause souvent le probleme de la performance et prefere des tres grosses fonctions dans le style C a des designs objet facile a maintenir, reutiliser et ameliorer.

    Donc je me demandais jusqu'a quelle point ces personnes avaient raison. Et si je pouvais trouver des metriques sur le sujet. Ca me donnera une base serieuse a montrer pour faire valoir le point de vu objet de la programmation au niveau des performances.

    Cordialement
    Vincent
    XXiemeciel

  5. #5
    HRS
    HRS est déconnecté
    Membre confirmé
    Avatar de HRS
    Inscrit en
    Mars 2002
    Messages
    677
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 677
    Points : 638
    Points
    638
    Par défaut
    Citation Envoyé par Selenite
    Et surtout tu comprendras pourquoi il faut mettre la partie la plus
    fréquente du if en première. Et ça, c'est vraiment essentiel.
    avec ||, c'est vrai; mais avec && c'est l'inverse (mettre en 1er la partie
    la moins fréquente)

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Août 2003
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 247
    Points : 276
    Points
    276
    Par défaut
    Citation Envoyé par HRS
    Citation Envoyé par Selenite
    Et surtout tu comprendras pourquoi il faut mettre la partie la plus
    fréquente du if en première. Et ça, c'est vraiment essentiel.
    avec ||, c'est vrai; mais avec && c'est l'inverse (mettre en 1er la partie
    la moins fréquente)
    Je parlais en fait du if .. else ...
    Les processeurs Athlon (et Pentium 3 ou plus aussi je crois) anticipent les sauts conditionnels. La règle d'anticipation est simple : un saut en arrière est toujours pris, en saut en avant n'est jamais pris. Donc il vaut mettre la partie la plus fréquente du if en premiere.

    Ma remarque étant cependant à prendre comme une boutade, bien entendu. C'est bien la dernière chose à faire que de regardé ces choses là.

  7. #7
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Citation Envoyé par xxiemeciel
    Donc je me demandais jusqu'a quel point ces personnes avaient raison. Et si je pouvais trouver des metriques sur le sujet. Ca me donnera une base serieuse a montrer pour faire valoir le point de vu objet de la programmation au niveau des performances.
    Je ne suis pas sûr .. Tu as consulté le document n1666 ? (3e entrée sous google)
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  8. #8
    Membre averti Avatar de xxiemeciel
    Inscrit en
    Juin 2005
    Messages
    371
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 371
    Points : 352
    Points
    352
    Par défaut
    Oui j'ai commencé a regarder le document n1666 mais pas en entier, je manque un peu de temps mais quand j'aurais parcouru les parties qui m'interesse je viendrais donner des commentaires.

    Vincent
    XXiemeciel

  9. #9
    Membre averti Avatar de xxiemeciel
    Inscrit en
    Juin 2005
    Messages
    371
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 371
    Points : 352
    Points
    352
    Par défaut
    c'est un bon article, tres complet. Ca devrais suffire a repondre a certaines questions sur les performances qui n'arrete pas de revenir.

    Merci
    Vincent
    XXiemeciel

  10. #10
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    C'est un document qui a le mérite d'être plus objectif que les plus folles rumeurs que l'on peut lire ici ou là.

    Après, tout ce qui reste, c'est la doc de ton compilo (genre pour savoir sous quelles conditions tu pourras profiter du RVO) et des benchmarks persos pour vérifier le prix de telle ou telle autre fonctionnalité sous ta platerforme.

    Dans une thématique proche (quels styles de progammation et quels langages adopter), il y a un document sympa sur objet mentor -> "Why are you still programming in C" (ou un nom approchant).
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  11. #11
    Membre averti Avatar de xxiemeciel
    Inscrit en
    Juin 2005
    Messages
    371
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 371
    Points : 352
    Points
    352
    Par défaut
    C'est un titre prometteur,

    En tout cas maintenant je vais pouvoir faire le point entre les prejugés et la réalité

    Vincent
    XXiemeciel

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

Discussions similaires

  1. Sortie de Enyo 2.5 : gain en performance et stabilité
    Par vermine dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 15/12/2014, 14h40
  2. Knockout 3.1.0 : performance, stabilité et compatibilité
    Par vermine dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 05/03/2014, 11h36
  3. [MSSQL2005] Quel plan de maintenance pour des performances?
    Par david_chardonnet dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 12/03/2008, 12h51
  4. Performance et stabilité de Access
    Par belab101 dans le forum Access
    Réponses: 1
    Dernier message: 08/12/2005, 18h12
  5. [maintenance][performance] Que faire comme maintenance ?
    Par woodwai dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 06/11/2003, 15h39

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