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 :

[Compilateur] boucle C++, Java


Sujet :

C++

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 646
    Par défaut [Compilateur] boucle C++, Java
    Bonjour à tous,

    Je suis tomber sur un post dans la section Java, il parle de la declaration en debut de boucle, voici la discussion:
    http://www.developpez.net/forums/sho...d.php?t=191806

    Et ben en fait du coup je me pose la question en ce qui concerne C et C++.
    C'est pareil?

    Petit exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    1)
    CMaClasse* pVar;
    while(test)
    {
    pVar = fonction_qui_renvoit_un_pointeur_CMaClasse();
    // code
    }
     
    Et
    2)
    while(test)
    {
    CMaClasse* pVar = fonction_qui_renvoit_un_pointeur_CMaClasse();
    // code
    }
    En java ils disent que le 2eme code est mieux.
    Qu'en pensez-vous?

  2. #2
    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 : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Globalement tu peux te fier à ce qui est dit en Java. En C++, une bonne habitude est de ne déclarer une variable que lorsqu'on en a besoin.

  3. #3
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Bonjour,

    Citation Envoyé par kacedda
    En java ils disent que le 2eme code est mieux.
    Qu'en pensez-vous?
    Oui globalement on peux répéter la même chose que pour Java : la seconde version limite la portée de la variable donc c'est préférable mais théoriquement la variable est recrée à chaque fois ce qui peux ralentir le programme. Cependant le compilateur se chargera de sortir la variable de la boucle

  4. #4
    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 : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    théoriquement la variable est recrée à chaque fois ce qui peux ralentir le programme
    Une construction ne coûte pas forcément plus cher qu'une affectation. La variable étant sur la pile, son emplacement mémoire sera reservé à l'avance, qu'elle soit dans ou hors de la boucle.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 646
    Par défaut
    Ok, merci, je pensai un peu pareil!
    Finalement le mieux c'est de faire pareil: compiler les deux et regarder la difference!
    A+

  6. #6
    Membre Expert
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Par défaut
    Merci

  7. #7
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Citation Envoyé par Ti-R
    Merci
    Pas forcement si quelqu'un a envie de se lancer dans des tests

  8. #8
    Membre Expert
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Par défaut
    heu

    Une autre fois peut être, mais je suis sur que des personnes l'on déjà testé.

    A mon avis, il ne vaut mieux pas tenter le diable et écrire la solution 1 pour être "sur", cela dépend ensuite des besoins, si la boucle est de 5 itérations... faut passer son chemin, si c'est du traitement d'image et que la boucle est de l'ordre de 3000*3000, écrire la solution 1 me semble plus juste.

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

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 635
    Par défaut Chacun voit midi à sa porte
    Selon moi, il s'agit d'être très critique par rapport aux conseils qui veulent faire croire que "c'est mieux de faire ainsi que comme cela"...

    AMHA, il manque toujours deux parties de phrases commençant respectivement par "si..."(ou "dans le cas de ...") et par "et sinon ..."

    En effet, pour chaque cas "en faveur de", il est possible de trouver un cas pour lequel, justement, il sera préférable "de ne pas"...

    Prenons, par exemple le cas des "ruptures" (boucles imbriquées) pour lequel il me parraitrait aberrant de suivre le conseil...

    Prenons aussi tous les cas où, une fois sorti de la boucle, la dernière valeur récupérée devrait être réutilisée ailleurs (un exemple tout bete: les opérateurs de flux)

    Je ne dis absolument pas, comprenons nous bien, que ce conseil ne vaut rien... Je dis juste qu'il faut faire preuve de la plus grande attention avant de l'appliquer.

    Un autre exemple, basé sur une chaine de caractères (std::string):

    Il parrait beaucoup plus opportun de créer une boucle du genre de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    int taille;
    taille=chaine.size();
    while(taille>0)
    {
        //le code
        --taille;
    }
    Ou taille serait utilisé pour autre chose que pour déterminer s'il faut sortir de la boucle, que de créer un code qui déclarerait une variable locale à la boucle, et initialisée sur la taille actuelle

    Le problème ne se situant pas au niveau de la création de la variable, mais bel et bien au niveau du décompte de la taille qui serait nécessaire pour chaque itération...
    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

Discussions similaires

  1. probleme de boucle en java et xml
    Par kayenne77 dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 11/09/2009, 17h18
  2. Compilateur GCJ pour java sur AIX
    Par qiqi1111 dans le forum Build
    Réponses: 1
    Dernier message: 19/03/2009, 15h20
  3. les boucles en java
    Par ndongopf dans le forum Langage
    Réponses: 2
    Dernier message: 05/02/2009, 09h18
  4. Boucle en java et mauvais affichage
    Par mansour67 dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 22/03/2008, 23h59

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