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

Autres éditeurs Discussion :

Fonction vide


Sujet :

Autres éditeurs

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 15
    Points : 13
    Points
    13
    Par défaut Fonction vide
    Salut,

    Je me demandais pourquoi si je compile avec Gcc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    void vide(void)
    {
    }
     
    void fonction(void)
    {
       ....
       vide();
    }
    il apparait l'appel a la fonction vide. Ce qui, corrigez moi si je rate un point, ne serre a rien !

    En fait il enleve cet appel si je lui donne l'option -O3, ne pourrait il pas le faire pour tous les niveaux d'optimisation ?

  2. #2
    HRS
    HRS est déconnecté
    Membre confirmé
    Avatar de HRS
    Inscrit en
    Mars 2002
    Messages
    678
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 678
    Points : 638
    Points
    638
    Par défaut
    si vous faites

    i++;
    i--;

    le compilateur va-t-il se dire "il est con ce programmeur, ça sert à rien" ?

    En organisation, on vous explique qu'il vaut mieux que le petit
    personnel (le compilateur) fasse systématiquement une tâche que de se
    poser la question s'il doit faire la tâche car réfléchir prend du temps et
    fait bobo à la tête

    en positionnant l'option d'optimisation, on remplace un simple compilateur
    par un super compilateur, plus intelligent bien-sûr

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 15
    Points : 13
    Points
    13
    Par défaut
    bon je sais que ca parait bete au premier abord mais si tu bosses sur des projets multi plateforme ca arrive.

    D'autres reponse SVP ?

  4. #4
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Utilise le préprocesseur pour les problèmes de multi-plateforme, et va plutôt voir sur le site de gcc si tu as des critiques à formuler sur le produit, ici c'est un forum d'aide.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 15
    Points : 13
    Points
    13
    Par défaut
    merci Jedai pour cette reponse aimable.

    Ma question posee n'est pas une critique sur Gcc, mais seulement une question.
    Je voulais juste comprendre la raison de ce choix.

  6. #6
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Désolé, j'ai peut-être été un peu sec , néanmoins même si c'est une question et pas une critique, il n'en reste pas moins que c'est une question à laquelle tu aurais plus de chance d'avoir une réponse sur le site de gcc.

    Sinon, je n'ai aucune idée d'une raison qui pourrait pousser gcc à ne pas optimiser ce cas sans pousser des investigations plus loin : . Plus vraisemblablement, les développeurs de gcc ont jugé que le surcroît de "réflexion" nécessaire pour vérifier à chaque appel de fonction si il s'agit d'une fonction purement inutile n'était pas intéressant vu l'infime gain de vitesse que cela permettait d'obtenir dans la plupart des cas (sauf si l'appel de fonction se trouve vraiment dans un goulot d'étranglement) et que les développeurs soucieux de la rapidité de leur code choisirait un niveau d'optimisation élevé comme -O3.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 15
    Points : 13
    Points
    13
    Par défaut
    merci pur ta reponse Jedai. J'irai effectivement poser la question sur un forum de gcc en esperant qu'il ne prenne pas m'a question pour une critique

  8. #8
    Membre émérite

    Homme Profil pro
    Urbaniste
    Inscrit en
    Mars 2002
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Mars 2002
    Messages : 255
    Points : 2 717
    Points
    2 717
    Par défaut
    Lit le doc :
    http://gcc.gnu.org/onlinedocs/gcc-3.3/gcc/Optimize-Options.html#Optimize%20Options

    Par défaut, l'option "-O0" est utilisée : aucune optimisation. Après, il y a différents niveau d'optimisation :
    1) Optimise un peu (Optimizing compilation takes somewhat more time, and a lot more memory for a large function.)
    2) Optimisation vraiment activée (Optimize even more. GCC performs nearly all supported optimizations that do not involve a space-speed tradeoff)
    3) Optimisation maximale (Optimize yet more)

    Mais passer le compilation maximale prend beaucoup plus de temps qu'une compilation simple, et consomme plus de mémoire !!!

    Le mieux étant d'utilsation les options :
    -g : pour le débogage
    -O2 (voir -O3) : pour les versions finales

    Note : "-Os" essaye de générer le binaire le plus petit possible. Je ne vois pas trop l'utilitée sur un PC. Sur l'information embarqué OK.

    @+ Haypo

  9. #9
    Membre émérite

    Homme Profil pro
    Urbaniste
    Inscrit en
    Mars 2002
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Mars 2002
    Messages : 255
    Points : 2 717
    Points
    2 717
    Par défaut
    A mon avis, l'option en question est :
    -finline-functions : Integrate all simple functions into their callers.

    En français : remplace directement un appel de "petites" fonctions par le code de cette fonction.

    Dans ton cas, "call vide" sera remplacé par ... <rien> :-)

    @+ Haypo

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 15
    Points : 13
    Points
    13
    Par défaut
    merci haypo pour tes reponses mais ma question c'etait plutot de savoir pourquoi ils n'ont pas fait cette optimisation dans tout les modes d'optim de GCC.
    Ca prend vraiment beaucoup de temps de voir que le corps d'une fonction est vide ?

    PS: ceci est une question et non une critique de GCC

Discussions similaires

  1. Fonctions vides et non inlinées
    Par Iradrille dans le forum C++
    Réponses: 12
    Dernier message: 21/11/2013, 17h44
  2. [PHP 4] résultat en retour de ma fonction vide alors que ..
    Par erox44 dans le forum Langage
    Réponses: 1
    Dernier message: 11/05/2012, 16h22
  3. [AC-2007] forme active en fonction vide ou pleine
    Par hugodu28 dans le forum IHM
    Réponses: 1
    Dernier message: 17/10/2011, 20h20
  4. fonction vide: compilateur optimise ou pas
    Par kacedda dans le forum C++
    Réponses: 14
    Dernier message: 21/01/2008, 17h15
  5. Optimisation : fonction vide ou test
    Par bolhrak dans le forum C++
    Réponses: 2
    Dernier message: 15/07/2006, 20h31

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