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

Threads & Processus C++ Discussion :

[MFC] Threads plus lent que process


Sujet :

Threads & Processus C++

  1. #1
    Futur Membre du Club
    Inscrit en
    F�vrier 2010
    Messages
    4
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2010
    Messages : 4
    Par d�faut [MFC] Threads plus lent que process
    Bonjour � tous,

    Je developpe sous XP sp2 32bit, avec visual 2005 et j'utilise ses MFC.
    Mon application prend en entr� un fichier, travail dessus, et me pond un fichier en sortie

    Comme j'ai plein de fichier diff�rents � traitier, j'ai voulu multithread�, et donc lancer plusieurs de ces traitements de fichier, chacun dans un thread diff�rent.

    Je n'ai pas de probleme de synchro entre threads car ils travaillent vraiment chacun sur des fichiers diff�rents, en entr� comme en sortie.

    d�s que j'ai eu multithread� la chose, j'ai commenc� � avoir de grave probleme de performance. A savoir que pour traiter 2 fichiers en meme temps (par exmple) le temps total de l'op�ration doublait par rapport au temps unitaire de traitement de chaque fichier...

    J'ai alors lanc� plusieurs instance de mon application, et ne lancant cette fois ci, qu'un thread par application ( = par processus, si je ne m'abuse?)
    et l�, au mystere, chaque appli traite son fichier tres rapidement.

    Donc voila ma question: qu'est ce qui pourait ralentir l'�x�cution de plusieurs thread au sein d'un meme process?

    j'ai suivis plusieurs piste, tout d'abord celle de l'utilisation intensive de container MFC (CListe, CMap) que j'ai remplac� par leur pendant de la STL, bof , le gain de temps fut n�gligeable.
    Ensuite ( et l� je suis tomb� sur le cul) j'ai virer mes TRY/ CATCH (en majuscule hein, la version MFC toujours), et l�, �h bonheur, j'ai grandement r�duit le temps d'�x�cution des multiThreads au sein d'un meme process !!!
    mais pas encore suffisament, ca reste inf�rieur au 4x 1process.

    [edit1]
    j'ai tent� de modifi� le StackSize dans le lancement de mes threads par AfxBeginThread(), j'ai essay� plusieurs valeurs : 0 (par defaut) , 1Ko, 10 Ko, 1Mo. Rien n'y fait, les temps sont toujours aussi mauvais.
    [\edit1]

    voila, si quelq'un � la moindre id�e, je suis interess�

  2. #2
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Fais-tu appel � quelque chose qui est un tant soi peu partag�, du genre la console, ou autre chose li� � l'interface utilisateur?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Futur Membre du Club
    Inscrit en
    F�vrier 2010
    Messages
    4
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2010
    Messages : 4
    Par d�faut
    non je ne crois pas, ce sont juste des threads de travails, sans autre connexion avec l'ext�rieur que la lecture/�criture dans des fichiers ( diff�rents pour chaque thread)

    Est-ce que le fait d'instancier beaucoup d'objets au cours de mes traitements pourrait avoir un impact lorsque les threads sont dans le meme process ?

  4. #4
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Ben, il n'y a (originellement) qu'un seul tas par processus, prot�g� par un mutex interne. Donc, si tu fais plein de new/delete, le processus ne peut pas tout faire en m�me temps.
    Ce serait une bonne explication sur la lenteur par rapport � des processus s�par�s.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Futur Membre du Club
    Inscrit en
    F�vrier 2010
    Messages
    4
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2010
    Messages : 4
    Par d�faut
    Les r�sultats te donnent raison je pense. Magr� tous mes test de perf, avec chronom�trage � l'appuie, je n'ai pas r�ussi � isoler une fonction en particulier qui prendrait plus te temps. Chaque �tape de mon traitement est juste plus lente quand les threads se partage le meme processus.

    Merci de ton aide

  6. #6
    Futur Membre du Club
    Inscrit en
    F�vrier 2010
    Messages
    4
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2010
    Messages : 4
    Par d�faut
    Effectivement, j'ai modifi� mon code pour essayer de faire moins d'allocation, mais de plus grosse taille, et ca a am�liorer les perf de fa�on incroyable

    bref, ma conception objet �tait jolie tout plein...mais ne suffit pas, all�, on casse et on recommence

  7. #7
    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 goestrip Voir le message
    bref, ma conception objet �tait jolie tout plein...mais ne suffit pas, all�, on casse et on recommence
    Elle est peut-�tre correcte, mais simplement, c'est son impl�mentation qui est mauvaise... Il faut, quoi qu'il arrive, limiter au maximum les allocations / lib�rations en dehors des phases d'initialisation / finalisation.

    Pendant le fonctionnement, si tu dois faire un new/malloc, poses-toi deux ou trois fois la question "Est-ce VRAIMENT n�cessaire ??"... La plupart du temps, tu t'en sors avec un pool d'objets et/ou des buffers g�n�riques.
    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

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [std::thread] Algorithme plus lent que en simple thread
    Par Trademark dans le forum Threads & Processus
    R�ponses: 24
    Dernier message: 17/04/2013, 10h52
  2. R�ponses: 76
    Dernier message: 29/03/2011, 16h15
  3. [MFC] theApp, plus lent que le reste?
    Par giova_fr dans le forum MFC
    R�ponses: 4
    Dernier message: 23/02/2006, 12h06
  4. [Firebird][Optimisation]Plus lent que le BDE!
    Par vincentj dans le forum D�buter
    R�ponses: 3
    Dernier message: 07/02/2005, 15h48
  5. DBExpress est plus lent que BDE?
    Par palassou dans le forum Bases de donn�es
    R�ponses: 4
    Dernier message: 02/07/2004, 08h39

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