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 :

diminuer charge CPU


Sujet :

MFC

  1. #1
    Membre confirm�
    Inscrit en
    Avril 2007
    Messages
    74
    D�tails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 74
    Par d�faut diminuer charge CPU
    Bonjour,

    Je developpe une application MFC. Je trouve que mon application utilise beaucoup de charge CPU (il y a beaucoup de boucle). J'ai entendu dire qu'il existait une fonction qui permettai de "rendre la main" � Windows un certain temps et donc de diminuer la charge CPU.

    Quelqu'un en � t il d�j� entendu parl� et quelle est cette fameuse fonction?

    Je vous remercie.

  2. #2
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    D�tails du profil
    Informations personnelles :
    �ge : 51
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par d�faut
    Si tu veux parler de Sleep, �a ne changera pas grand-chose... Si ton appli bouffe beaucoup de CPU, tu as en g�n�ral les raisons suivantes :
    • C'est normal, tu fais un traitement "lourd".
    • Tu bloques la boucle de messages Windows, et ton application se "fige" tant que tu n'as pas fini ton traitement. Lancer des threads pour r�soudre �a.
    • Tu effectues des appels en attente active. Par exemple, boucler sur une lecture depuis une socket au lieu d'utiliser les �v�nements et/ou les lectures bloquantes.


    Au pire, essaie de faire un profilage du code et rep�re la fonction la plus consommatrice de temps machine, que tu posteras ensuite ici... Mais il te faut les outils ad�quats, et �a d�pend de ta version de Visual utilis�e h�las.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au s�rieux, de toutes fa�ons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum ad�quat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  3. #3
    Membre confirm�
    Inscrit en
    Avril 2007
    Messages
    74
    D�tails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 74
    Par d�faut
    Citation Envoy� par Mac LAK Voir le message
    Si tu veux parler de Sleep, �a ne changera pas grand-chose... Si ton appli bouffe beaucoup de CPU, tu as en g�n�ral les raisons suivantes :
    • C'est normal, tu fais un traitement "lourd".
    • Tu bloques la boucle de messages Windows, et ton application se "fige" tant que tu n'as pas fini ton traitement. Lancer des threads pour r�soudre �a.
    • Tu effectues des appels en attente active. Par exemple, boucler sur une lecture depuis une socket au lieu d'utiliser les �v�nements et/ou les lectures bloquantes.


    Au pire, essaie de faire un profilage du code et rep�re la fonction la plus consommatrice de temps machine, que tu posteras ensuite ici... Mais il te faut les outils ad�quats, et �a d�pend de ta version de Visual utilis�e h�las.
    Oui Sleep je connais. On m'avais parl� d'une autre fonction mais je ne m 'en souviens plus.
    Je n'utilise pas de process vraiment "lourd" mais j'ai effectivement des boucles sur lecture de socket mais elles sont dans des Threads il me semble.

    Par contre, tu me parle de profilage de code: que veux tu dire?

    J'utilise Visual studio 2008 version pro.

  4. #4
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    D�tails du profil
    Informations personnelles :
    �ge : 51
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par d�faut
    Citation Envoy� par totoscill Voir le message
    Je n'utilise pas de process vraiment "lourd" mais j'ai effectivement des boucles sur lecture de socket mais elles sont dans des Threads il me semble.
    Ce n'est pas parce qu'elles sont dans des threads qu'elles ne carbonisent pas le CPU... Tes threads de lecture depuis les sockets doivent occuper ZERO POURCENT de charge CPU lorsque tu n'as aucune donn�e pr�tre. Si ce n'est pas le cas, c'est que tes lectures ne sont pas bloquantes, donc c'est "mal".

    Citation Envoy� par totoscill Voir le message
    Par contre, tu me parle de profilage de code: que veux tu dire?
    Analyser le code (via des outils automatiques) afin de savoir combien de temps CPU chaque fonction bouffe dans le programme.

    Citation Envoy� par totoscill Voir le message
    J'utilise Visual studio 2008 version pro.
    Je ne crois pas qu'il y aie une fonction de profilage dans cette version, il me semble que ce n'est que dans la version "Development" et au dessus...
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au s�rieux, de toutes fa�ons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum ad�quat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  5. #5
    Membre confirm�
    Inscrit en
    Avril 2007
    Messages
    74
    D�tails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 74
    Par d�faut
    Citation Envoy� par Mac LAK Voir le message
    Ce n'est pas parce qu'elles sont dans des threads qu'elles ne carbonisent pas le CPU... Tes threads de lecture depuis les sockets doivent occuper ZERO POURCENT de charge CPU lorsque tu n'as aucune donn�e pr�tre. Si ce n'est pas le cas, c'est que tes lectures ne sont pas bloquantes, donc c'est "mal".

    Analyser le code (via des outils automatiques) afin de savoir combien de temps CPU chaque fonction bouffe dans le programme.

    Je ne crois pas qu'il y aie une fonction de profilage dans cette version, il me semble que ce n'est que dans la version "Development" et au dessus...
    Je suis d'accord avec toi mais normalement une lecture sur une socket est bloquante donc pas de probl�me. Un autre process qui doit me prendre de la charge CPU est la mise � jours de l'IHM.

  6. #6
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    D�tails du profil
    Informations personnelles :
    �ge : 51
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par d�faut
    Citation Envoy� par totoscill Voir le message
    Je suis d'accord avec toi mais normalement une lecture sur une socket est bloquante donc pas de probl�me. Un autre process qui doit me prendre de la charge CPU est la mise � jours de l'IHM.
    V�rifie quand m�me pour tes sockets : mets un breakpoint apr�s la lecture, n'envoie AUCUNE donn�e. Si tu t'arr�tes sur tes BP, c'est pas bon. Si effectivement d�s que tu envoie les BP se d�clenchent, alors c'est qu'elles sont bien bloquantes.

    Sinon, c'est un thread plut�t qu'un processus, je pense... Si c'est un processus, c'est visible directement dans le gestionnaire de t�ches.
    Ensuite, c'est justement le profilage qui te permet de savoir quel thread / fonction carbonise le temps CPU...
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au s�rieux, de toutes fa�ons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum ad�quat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  7. #7
    Membre confirm�
    Inscrit en
    Avril 2007
    Messages
    74
    D�tails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 74
    Par d�faut
    Citation Envoy� par Mac LAK Voir le message
    V�rifie quand m�me pour tes sockets : mets un breakpoint apr�s la lecture, n'envoie AUCUNE donn�e. Si tu t'arr�tes sur tes BP, c'est pas bon. Si effectivement d�s que tu envoie les BP se d�clenchent, alors c'est qu'elles sont bien bloquantes.

    Sinon, c'est un thread plut�t qu'un processus, je pense... Si c'est un processus, c'est visible directement dans le gestionnaire de t�ches.
    Ensuite, c'est justement le profilage qui te permet de savoir quel thread / fonction carbonise le temps CPU...
    Ok, merci. Je regarde ca.

Discussions similaires

  1. [Syst�me]charge CPU
    Par dehbi dans le forum API standards et tierces
    R�ponses: 10
    Dernier message: 04/08/2005, 11h58
  2. Monter la charge CPU
    Par Dr_GonZO dans le forum Administration syst�me
    R�ponses: 2
    Dernier message: 19/05/2005, 11h08
  3. probl�me de charge CPU SUR ORACLE
    Par crasho007 dans le forum Administration
    R�ponses: 35
    Dernier message: 19/05/2004, 15h35
  4. Charge CPU avec prog opengl + win32
    Par TibobiT dans le forum MFC
    R�ponses: 2
    Dernier message: 12/05/2004, 19h26

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