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 :

Boucle non optimisée


Sujet :

C++

  1. #1
    BNS
    BNS est déconnecté
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 129
    Points : 45
    Points
    45
    Par défaut Boucle non optimisée
    Bonjour à tous!

    Je tente d'optimiser un de mes programmes. Quelqu'un pourrait-il m'expliquer pourquoi cet algorithme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    void Mafonction1(unsigned char *MonImage)
    for (short int x=1;x<width-1;x++)
            for (short int y=1;y<height-1;y++)
    {
         //Traitement(x,y);
    }
     
    void Mafonction2(unsigned char *MonImage)
     for (short int x=1;x<width-1;x++)
             for (short int y=1;y<height-1;y++)
     {
          //Traitement2(x,y);
     }
    est plus rapide que celui-ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void Regroupement(unsigned char *MonImage)
      for (short int x=1;x<width-1;x++)
              for (short int y=1;y<height-1;y++)
      {
           Mafonction1(x,y);
           Mafonction2(x,y);
    // les boucles dans mes fonctions ont eté supprimées bien sur
      }
    Sachant que dans le 2eme algorithm il ne scanne qu'une fois tous les x,y alors que dans la premiere on le fait 2 fois ( plus de calculs ) ?

    mercr pour votre aide

  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 : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Parce qu'il y a 2 appels par boucle à des fonctions et que dans l'autre cas il n'y en a que 2 ?

  3. #3
    Membre habitué Avatar de b Oo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 179
    Points : 185
    Points
    185
    Par défaut
    Bonjour,
    en fait dans le deuxième programme tu appeles des fonctions à chaque fois. Donc l'appel de fonction est dans ce cas présent plus lent que le premier programme.
    Une solution est de déclarer ta fonction inline.

    Je te conseille d'aller voir Un exemple simple d'intégration dans la faq C++, qui justement explique ce qui ce passe.

    Bonne journée.

    b Oo
    b Oo

Discussions similaires

  1. Réponses: 3
    Dernier message: 03/01/2007, 21h43
  2. Boucle non bloquante
    Par Drikcé dans le forum Delphi
    Réponses: 9
    Dernier message: 30/10/2006, 17h22
  3. procedure stocke non optimise.
    Par arnololo dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 01/08/2005, 19h00
  4. procedure stocke non optimise.
    Par arnololo dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 02/02/2005, 16h34
  5. [LG]problème de tri de pointeur (bulles non optimisé)
    Par blackmage dans le forum Langage
    Réponses: 3
    Dernier message: 20/11/2003, 23h42

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