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�![]()
Partager