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 :

Optimisation : fonction vide ou test


Sujet :

C++

  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2006
    Messages : 366
    Points : 444
    Points
    444
    Par défaut Optimisation : fonction vide ou test
    Bonjour,

    J'aimerais savoir quel est le plus rapide, du point de vue de l'exécution, entre un appel à une fonction vide et un test ; autrement dit, en illustrant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    void fun() {
    }
     
    ...
    //plus loin dans le code
    fun();
    //suite du code
    ...
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    if(value) {
        invokeAFunction();
    }
    else {
        //suite du code
        ...
    J'ai mis fun en fonction par souci de lisibilité, dans les faits ce sera une fonction membre de classe, redéfinie dans les classes dérivées, une des redéfinitions ne faisant justement rien. Je cherche donc à savoir s'il vaut mieux que je teste une valeur et invoque la fonction uniquement dans le cas où elle est non vide, ou bien s'il vaut mieux l'invoquer à chaque fois sans se soucier de savoir si elle est vide ou non.
    Merci d'avance.

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 743
    Points : 460
    Points
    460
    Par défaut
    Normalement une fonction vide a un coût nul, puisque en mode release le compilo doit purement et simplement zapper la fonction. Sauf si la fonction est virtuelle...
    Un test (branchement conditionnel) est souvent TRES TRES lent lors de l'exécution parceque le processeur ne fait pas toujours la bonne prédiction, et le pipeline doit être réinitialisé.

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2006
    Messages : 366
    Points : 444
    Points
    444
    Par défaut
    Ok merci beaucoup, en plus ça simplifie grandement mon code

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

Discussions similaires

  1. fonction vide: compilateur optimise ou pas
    Par kacedda dans le forum C++
    Réponses: 14
    Dernier message: 21/01/2008, 16h15
  2. Optimisation fonction MAX
    Par AurelGTS dans le forum Langage SQL
    Réponses: 7
    Dernier message: 14/05/2007, 19h26
  3. [Optimisation][Fonction]calcul du nombre de jours ...
    Par m-mas dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 26/10/2005, 14h39
  4. xsl-fo : ligne de tableau specifique en fonction d'un test
    Par de LANFRANCHI dans le forum XSL/XSLT/XPATH
    Réponses: 9
    Dernier message: 12/05/2005, 08h24
  5. Fonction vide
    Par vagabon dans le forum Autres éditeurs
    Réponses: 9
    Dernier message: 29/07/2003, 18h23

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