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 :

multithreading et performance


Sujet :

C++

  1. #1
    Membre confirm�
    Inscrit en
    Avril 2002
    Messages
    180
    D�tails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 180
    Par d�faut multithreading et performance
    une simple question

    Je doit traiter de l'information qui est storer a l'interieur de 2000 a 4000 fichier d'ont la taille varie de 100Ko a 2Go dans mon cas chaque fichiers sera considerer comme un object. Presentement le temps de pris pour executer le travaille est en moyenne 2 heurs mais peut ateindre 6 heurs dans las cas les plus extremes, j'aimerais ameliorer le temps de traitement

    pour ce qui est de la construction des object :

    bienque ce ne sois pas la la principal action qui qui affecte le temps d'excution est-ce que de cree plusieur thread pour lire les fichier pourait ameliorer les performances

    Merci

  2. #2
    Membre �clair� Avatar de Higestromm
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    516
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 516
    Par d�faut
    Selon moi je dirais non ... voir meme cela ralentirais ton programme car chaque processus liraient des donn�es �parpill�s sur le disque dur au lieu de lire les donn�es d'une mani�re "relativement" lin�aire... A moin que tu fasse 2 thread qui lisent chacune sur un disque dur diff�rent...

  3. #3
    Expert confirm�

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par d�faut
    Je verais plutot un thread qui lis les donn�es et un autre qui les traite. Comment proc�des-tu pour lire les fichiers ? Tes traitements sont couteux ?

  4. #4
    Membre �clair�
    Profil pro
    Ing�nieur d�veloppement
    Inscrit en
    Juillet 2004
    Messages
    323
    D�tails du profil
    Informations personnelles :
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement

    Informations forums :
    Inscription : Juillet 2004
    Messages : 323
    Par d�faut
    Tu vas acc�l�rer les perfs en passant en multithread si ta machine poss�de plusieurs processeurs.

    Le plus important pour toi, sera je pense, la lecture de tes fichiers. Les acc�s disques sont des facteurs de vitesse tr�s limitant.

    Il est souvent conseill� de lire tes fichiers textes par (gros) blocks et non pas caract�re par caract�re. Ainsi, le cache du disque peut fonctionner de mani�re optimale.

  5. #5
    tut
    tut est d�connect�
    Membre �clair�
    Avatar de tut
    Inscrit en
    Juillet 2002
    Messages
    373
    D�tails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 373
    Par d�faut
    j'appuis la r�ponse d'Aur�lien : un thread lecteur qui peut se permettre d'�tre bloqu� pendant les latences de lecture sur disque dur; et un thread qui travaille les donn�es d�ja lu.
    Et une structure de donn�e globale au milieu.
    C'est un cas typique du pattern lecteur-�crivain, me semble-t-il.
    En tout cas le sujet est interressant.

  6. #6
    Membre exp�riment�
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    290
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2002
    Messages : 290
    Par d�faut
    Pour am�liorer les perfs :

    separer (en termes de thread) lecture/traitement/ecriture.
    ensuite si la machine est multiproc separer le traitement en threads.

    Eventuellement (surtout si les fichiers ne sont pas sur le meme (controlleur IDE de) disque faire des threads differents pour les differents fichiers ->

    l'id�e est davoir un algo producteur consomateur

    les threads lecteurs de fichier lisent pour remplir un tampon (grand de pr�f�rence) et posent quand le tampon est plein...

    les threads de traitement vident le tampon et envoient leur resultat dans un nouveau tampon et posent soit quand le tampon de sortie est plein soit quand le tampon d'entr�e est vide

    les threads d'ecriture ecrivent sur fichier les contenu de leur tampon et posent quand il est vide...

    Si le traitement est vraiement consomateur de temps il n'est pas ralenti par les operations de lecture-ecriture

    Si le traitement n'est pas le facteur limitant tu ne gagneras pas grand-chose...

  7. #7
    tut
    tut est d�connect�
    Membre �clair�
    Avatar de tut
    Inscrit en
    Juillet 2002
    Messages
    373
    D�tails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 373
    Par d�faut
    Avant toute chose, il faut �tudier le ph�nom�ne et comprendre ce qui est long, pour pouvoir cibler au mieux l'optimisation.
    Si tu passes ton temps � optimiser un truc qui ne fait pas perdre de temps, �a ne sert � rien.

  8. #8
    Expert confirm�

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par d�faut
    +1
    D'abord identifier ce qui est lent : lecture et/ou traitements.

  9. #9
    Membre confirm�
    Inscrit en
    Avril 2002
    Messages
    180
    D�tails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 180
    Par d�faut
    J'ai boucoup de travailles a faire pour tenter d'optimiser cette app.
    La principale cause de la lanteur est directement a la quantiter fenomenal de donnees a traiter, l'optimisation des boucles dans le traitement feras probablement la plus grande difference au niveau du temps d'execution.
    De plus certain section son ecrit en perl <<Ya probablement quelque nanoseconde a recuperer de ce coter>>

    nez en moin la 1erre tache que l'app effectue est de construire ces object a partide de fichier je veux m'assure de ne pas perdre de temp d'execution pour ces operation

    Merci

  10. #10
    Expert confirm�

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par d�faut
    Il faut d�tecter les goulots d'�tranglement dans ton programme afin de trouver ce qu'il faut optimiser. Sinon tu vas perdre ton temps � faire des trucs qui ne font pas beaucoup gagner.

Discussions similaires

  1. Proxy thread queue multithread probleme performance
    Par G4uthier dans le forum Programmation et administration syst�me
    R�ponses: 2
    Dernier message: 16/08/2011, 10h12
  2. R�ponses: 16
    Dernier message: 01/10/2010, 13h47
  3. Informations performances multithreading
    Par comtention dans le forum D�buter avec Java
    R�ponses: 6
    Dernier message: 29/01/2010, 14h53
  4. R�ponses: 17
    Dernier message: 01/06/2009, 03h32
  5. Multithread performant pour du calcul
    Par RenaudM dans le forum Langage
    R�ponses: 13
    Dernier message: 22/11/2008, 13h26

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