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

MFC Discussion :

Problème de vitesse d'execution


Sujet :

MFC

  1. #1
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 177
    Points : 115
    Points
    115
    Par défaut Problème de vitesse d'execution
    tout le monde, comment allez-vous?
    Moi -->

    Bon, j'ai un problème avec visual c++ 6. J'ai créé une application permettant à un robot de jouer au morpion contre un humain. J'ai créé une fenêtre sur laquelle se trouve une 12aine de boutons permettant de quiter, d'initialiser le robot..... j'ai aussi une liste box, et 3 bitmap affichées sur cette fenêtre.
    Je developpe sous WIN XP SP2, avec un P4 3.42GHz et 1Go de ram.

    Mon problème et qu'au lancement de l'application (en mode Debug et Release), l'affichage complet de tous les composants met bien 2min . Par exemple entre l'affichage de 2 boutons sur lesquels sont affichés 1 et 2, on peut compter 6secondes... c'est un supplice!!!

    J'ai regarder dans le setting, le mode Release est bien en MaximumSpeed.

    Je ne vois donc pas d'où peut provenir le problème, logiquement avec une telle config je ne devrais pas avoir de problème!!!

    Si quelqu'un a une idée qu'il me la fasse parvenir.

    Je vous remercie.

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    dans ce contexte il me semble que ce qu'il faut remettre en cause c'est la méthode ...

  3. #3
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 177
    Points : 115
    Points
    115
    Par défaut
    La méthode de prog? Benh disons que j'ai récupéré le code, j'ai juste aggrandit la fenêtre est ajouté un bouton pour l'afifchange, et rajouté pas mal de CreateProcess pour lancer des .exe quand le robot doit bouger (ce qu'il ne fait pas au démarrage). Avec le PC sur lequel il était présent il n'y avait pas de problème (WIN 2000, config moins bonne) pour lancer leur appli en release. J'ai rcupéré cet exec, il se lance aussi parfaitement sur mon PC.

    Cependant quand je lance ce que j'ai repris et légèrement modifié, ca lag! Ca pourrait venir du compilo? D'une config de visual?

  4. #4
    Membre émérite
    Avatar de la drogue c'est mal
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    2 253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 2 253
    Points : 2 747
    Points
    2 747
    Par défaut
    Cependant quand je lance ce que j'ai repris et légèrement modifié, ca lag! Ca pourrait venir du compilo? D'une config de visual?
    non du code
    il y a du linge sur la corde à linge

  5. #5
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 177
    Points : 115
    Points
    115
    Par défaut
    Alors pourquoi en utilisant le code sur un autre PC pas de problème? J'utilise le même code que l'autre groupe, il marche sur le PC mais sur le mien ça lag quand je le link moi même. Quand j'utilise leur .exe, il se lance nickel! Je voie pas pourquoi ca viendrait de mon code si c'est le même que le leur qui marche ?!?!

  6. #6
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    faut savoir ce que tu dis : c'est le meme code ou légérement modifié...
    dans le deuxieme cas il faut revoir le code ...

  7. #7
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 177
    Points : 115
    Points
    115
    Par défaut
    J'ai tuilisé les 2 pour voir si ca venait vraiement de mon code... sauf que non apriori. Quand je passe en pas à pas, il enchaîne les lignes d'afifchage des bouton sans problème

    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
    17
    18
    19
    20
    21
    22
     
     /* Création des différents boutons représentant le damier */
     hBtnCase6 = CreateWindow("BUTTON","6",WS_CHILD,70,650,40,40,hFenetre,0,hInstance,0); 
     hBtnCase7 = CreateWindow("BUTTON","7",WS_CHILD,110,650,40,40,hFenetre,0,hInstance,0); 
     hBtnCase8 = CreateWindow("BUTTON","8",WS_CHILD,150,650,40,40,hFenetre,0,hInstance,0); 
     hBtnCase3 = CreateWindow("BUTTON","3",WS_CHILD,70,690,40,40,hFenetre,0,hInstance,0); 
     hBtnCase4 = CreateWindow("BUTTON","4",WS_CHILD,110,690,40,40,hFenetre,0,hInstance,0); 
     hBtnCase5 = CreateWindow("BUTTON","5",WS_CHILD,150,690,40,40,hFenetre,0,hInstance,0); 
     hBtnCase0 = CreateWindow("BUTTON","0",WS_CHILD,70,730,40,40,hFenetre,0,hInstance,0); 
     hBtnCase1 = CreateWindow("BUTTON","1",WS_CHILD,110,730,40,40,hFenetre,0,hInstance,0); 
     hBtnCase2 = CreateWindow("BUTTON","2",WS_CHILD,150,730,40,40,hFenetre,0,hInstance,0); 
     
     /* Affichage des boutons représentant le damier */
     ShowWindow(hBtnCase0,nShowCmd);
     ShowWindow(hBtnCase1,nShowCmd);
     ShowWindow(hBtnCase2,nShowCmd);
     ShowWindow(hBtnCase3,nShowCmd);
     ShowWindow(hBtnCase4,nShowCmd);
     ShowWindow(hBtnCase5,nShowCmd);
     ShowWindow(hBtnCase6,nShowCmd);
     ShowWindow(hBtnCase7,nShowCmd);
     ShowWindow(hBtnCase8,nShowCmd);
    Pourquoi il mettrait 5/6 sec entre l'affichage de chacun des boutons ??

  8. #8
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 177
    Points : 115
    Points
    115
    Par défaut
    Le problème pourrait être lié à l'affichage? Quand je lance mon appli, les éléments s'affichent un par un très lentement. Si j'ouvre une nouvelle fenêtre (iexplorer par exemple), mon fenêtre qui était recouvert se remet à zero (enfin je devrais dire se vide) et il réaffiche aussi lentement ce qui a été effacé, comme si il recommencait.

    ?????

  9. #9
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    s'il y a que ca, ca ne devrait pas etre lent

    a quel moment fais-tu ca ? dans quelle fonction ?

  10. #10
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 177
    Points : 115
    Points
    115
    Par défaut
    C'est dans ma fonction principale
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int WINAPI WinMain (HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)
    . J'effectue tout une liste d'affichage du même type que les boutons cités précédements.

    Voilà le début de mon code qui fonctionne sur l'autre PC:

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
     {
     
     HWND hFenetre;      // Handle sur la fenêtre
     MSG MessagesAEnvoyer; 
     LPTSTR icone;      // Pour associer notre icône à l'application
     icone = MAKEINTRESOURCE(IDI_ICON1); //
     
     /* Paramètres de la fenêtre principale */
     WNDCLASS Fenetre; 
     Fenetre.lpszMenuName =NULL; 
     Fenetre.cbClsExtra =0; 
     Fenetre.cbWndExtra =0; 
     Fenetre.hInstance = hInstance; 
     Fenetre.lpfnWndProc = WinProc; 
     Fenetre.lpszClassName = "CyberMorpion"; 
     Fenetre.style = CS_VREDRAW | CS_HREDRAW; 
     Fenetre.hbrBackground = (HBRUSH) GetStockObject(LTGRAY_BRUSH); 
     Fenetre.hIcon =(HICON) LoadIcon(hInstance, icone); 
     Fenetre.hCursor =(HCURSOR) LoadCursor(hInstance, IDC_ARROW); 
     
     /* Enregistrement de la classe */
     RegisterClass(&Fenetre); 
     
    //-----------------------
     /* Création de la fenêtre principale*/
     hFenetre = CreateWindow("CyberMorpion", "CyberMorpion", WS_OVERLAPPED, 
             (1024/2)-(1000/2), (768/2)-(600/2), 1000, 900, NULL, NULL, hInstance, NULL); 
     /* Affichage de la fenêtre principale*/
     ShowWindow(hFenetre,nShowCmd);
    //-----------------------
     /* Création de la liste d'affichage des messages */
     hListe_Statut = CreateWindow("LISTBOX",0,WS_CHILD | WS_BORDER | WS_VSCROLL,30,350,500,200,
         hFenetre,0,hInstance,0); 
     /* Affichage de cette liste */
     ShowWindow(hListe_Statut,nShowCmd);
    //-----------------------
     
     /* Création du bouton "Quitter" */
     hBoutonQuitter = CreateWindow("BUTTON","Quitter",WS_CHILD,670,500,100,50,
          hFenetre,0,hInstance,0); 
     
     /* Affichage de ce bouton */
     ShowWindow(hBoutonQuitter,nShowCmd);

    Ensuite viennent les différents boutons dont je parlais. Il met du temps pour chacun des élements à afficher.


    Chacun des evenements de click sur un bouton sont traités dans mon WINPROC.


    J'ai remarqué une autre chose. J'ai en début du WinMain tout le code cité précédement, d'autre lignes du même type qui viennent après, puis une boucle while qui effectue une detection par cam tant qu'on appuie pas sur un bouton "Pion joué". Une des premières instruction du while est : WebCam.AfficheTableauMorpion(0); qui sert à dessiner une grille rouge sur 1 des images de la Webcam. Et bien qu'elle viennent après tout le reste de laffichange, cette instruction semble être la 1ere à être executée (ou du moins affichée) apr_ès la création de la fenêtre.

    mais je ne vois pas pourquoi!

  11. #11
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    pourquoi faire un showwindow à chaque fois ?

    qu'elle est la boucle dont tu parles ?

  12. #12
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 177
    Points : 115
    Points
    115
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    while(!FinProgramme) 
     { 
      Joueur = Morpion.QuiCommence();  // Détermine quel joueur commence : Ordi ou Humain
      Robot.InitialisationERV();
      WebCam.ChargeCapture(0);   // Affiche un flux de la WebCam, 
      WebCam.CalMirroir(0,1,1);   // applique un mirror sur l'image
      WebCam.AfficheTableauMorpion(0);  //et avec un cadrillage rouge 
      WebCam.AfficheImage(0,340,35);
    Je me suis trompé, c'est la boucle qui attend qu'on appuie qur "Quitter" pour ... quitter le prog ! A la suite de celle si on trouve les tests pour savoir à quel joueur c'est, ...

    Une fois que l'affichage est terminé, il n'y a plus aucun problème, l'appli est très fluide.

    Pour les ShowWindow, benh il servent à aficher les élement que je créé grâce à CreateWindow ^^ . C'est ce que m'a conseillé un étudiant de 3ème année, et ce que j'ai trouvé dans le prog que j'ai récupéré. C'est pas le mieux???

  13. #13
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    oulalalalala

    c'est très mal concu ca ; où est ta boucle de messages ?

  14. #14
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 177
    Points : 115
    Points
    115
    Par défaut
    Benh c'est peut être mal concu mais ca marche plus d'un PC à l'autre !

    Ma boucle de message...? C'est à dire???

  15. #15
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    c'est un programme en API Win32 ? c'est ca ? t'as bien des messages, des callbacks et tout ca ?

    C'est quoi l'objet WebCam ?

  16. #16
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 177
    Points : 115
    Points
    115
    Par défaut
    Pour ce qui est de WebCam c'est pour ma classe CWebCam dans laquelle j'ai différentes méthode qui vérifient la connection de la cam, permet l'affichage...

    Pour les messages, benh je sais pas trop de quoi tu parles j'ai pas trop eu a ma pencher sur tout ça.
    Tu parles de choses du type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    GetMessage(&MessagesAEnvoyer, hFenetre, 0, 0); 
       TranslateMessage(&MessagesAEnvoyer); 
       DispatchMessage(&MessagesAEnvoyer);
    ??

  17. #17
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 177
    Points : 115
    Points
    115
    Par défaut
    tu parles peut être des evenements du type l'appuie sur les boutons, c'est plutôt ca non?

  18. #18
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    Citation Envoyé par Samyhijodelaluna
    Pour ce qui est de WebCam c'est pour ma classe CWebCam dans laquelle j'ai différentes méthode qui vérifient la connection de la cam, permet l'affichage...

    Pour les messages, benh je sais pas trop de quoi tu parles j'ai pas trop eu a ma pencher sur tout ça.
    Tu parles de choses du type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    GetMessage(&MessagesAEnvoyer, hFenetre, 0, 0); 
       TranslateMessage(&MessagesAEnvoyer); 
       DispatchMessage(&MessagesAEnvoyer);
    ??
    si cette boucle de message est dans la boucle citée plus haut, ca va

  19. #19
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 177
    Points : 115
    Points
    115
    Par défaut
    benh alors oui, ils utilisent ca 2 ou 3 fois quand le joueur doit jouer, au début et à la fin de cette boucle.

  20. #20
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    ce qui est sur, c'est que dans cette boucle que sont gérés les evenements (dessin des controles, click souris, clavier, etc ...)
    donc, s'il y a des traitements trop long qui font que les evenements windows ne sont pas traités à temps dans la boucle de message, ca risque de ralentir ou de freezer

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [MEX] Problème de vitesse d'execution d'un code C
    Par takout dans le forum MATLAB
    Réponses: 10
    Dernier message: 08/06/2012, 10h51
  2. [P-03] Problème de vitesse d'execution
    Par moilou2 dans le forum Powerpoint
    Réponses: 6
    Dernier message: 26/10/2008, 16h07
  3. Réponses: 8
    Dernier message: 23/07/2007, 19h44
  4. [OpenGL] Problème de Vitesse d'éxécution
    Par stick059 dans le forum OpenGL
    Réponses: 9
    Dernier message: 19/11/2004, 13h57
  5. vitesse d'execution
    Par bakonu dans le forum OpenGL
    Réponses: 15
    Dernier message: 07/05/2004, 11h18

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