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

Windows Forms Discussion :

Threading en c#


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    218
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 218
    Points : 72
    Points
    72
    Par défaut Threading en c#
    Salut tout le monde,

    Je veux generer 10 000 fichiers txt en meme temps. Je veux une solution tres
    performante ! Combien de threads (windows application c#) dois-je creer?

    Y a-t-il une meilleure solution ?

  2. #2
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    tu veux pas un coca et une paille en plus

    à mon avis, si tu dois créer 10000 fichiers, c'est pas sur que faire du multithreading soit vraiment une solution plus performante

    De toute façon, à moins d'avoir plusieurs core et peut-etre faire de l'extension parallele (programmation parallèle), je vois pas là ou tu vas gagner du temps.

    A mon avis, écrire les 10000 fichiers séquenciellement, c simple, facile et aussi rapide que de "galérer" avec des threads sans perte de perfo je pense (quasi sur)
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  3. #3
    Membre averti
    Inscrit en
    Décembre 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Décembre 2008
    Messages : 256
    Points : 311
    Points
    311
    Par défaut
    Citation Envoyé par Identifiant Voir le message
    Salut tout le monde,

    Je veux generer 10 000 fichiers txt en meme temps. Je veux une solution tres
    performante ! Combien de threads (windows application c#) dois-je creer?

    Y a-t-il une meilleure solution ?
    Heu... chaque processeur n'a qu'une dizaine de registres... donc générer 10 000 fichiers en même temps est impossible
    Je suppose donc que ce que tu veux faire c'est les générer le plus rapidement possible
    Il faudrait que tu nous donnes un peu plus d'informations sur la façon dont tu les crée, leur format, leur contenu, leur taille approximative....
    Il y a toujours au moins deux solutions à un problème.

    http://software-design-development.blogspot.com/

  4. #4
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    218
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 218
    Points : 72
    Points
    72
    Par défaut
    Je dois generer des DTDs aleatoires d'un fichier XML. A chaque fois, je dois selectionner d'une maniere aleatoire des elements du fichier XML et generer correctement le DTD. Je repete cela pour 10 000 fois par exemple.

    Quelle est la meilleure solution?

  5. #5
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    218
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 218
    Points : 72
    Points
    72
    Par défaut
    J'ai cree deux threads, chaque thread genere sequentiellement 5000 fichiers. Je le trouve plus performant que de generer les 10 000 sequentiellement.

  6. #6
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    créer le contenu de tous les fichiers sur plusieurs thread (plusieurs centaines ca reste faisable) le threadpool peut etre pratique pour ca

    par contre pour les écrire sur le disques, mieux vaut un seul thread
    le disque dur sera plus lent pour faire plusieurs choses en meme temps qu'une seule

    par exemple, les x thread qui remplissent une collection, et le thread d'écriture qui vide la collection 1 par 1
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #7
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    218
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 218
    Points : 72
    Points
    72
    Par défaut
    Si je cree un seul thread, ca prend 10 mns pour generer les 10 000
    si je cree deux threads, ca prend 5 mns :S si je cree plus de 2 threads, ca prend un peu plus de temps mais reste moins que 10 mns;

  8. #8
    Membre averti
    Inscrit en
    Décembre 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Décembre 2008
    Messages : 256
    Points : 311
    Points
    311
    Par défaut
    Citation Envoyé par Identifiant Voir le message
    Si je cree un seul thread, ca prend 10 mns pour generer les 10 000
    si je cree deux threads, ca prend 5 mns :S si je cree plus de 2 threads, ca prend un peu plus de temps mais reste moins que 10 mns;
    Ben dans l'absolu, le bon nombre de Threads c'est le nombre de coeurs total sur ta machine.

    Donc je pense que tu as toi-même répondu à ta question.
    Tu as un dual-core, n'est-ce pas ?
    Il y a toujours au moins deux solutions à un problème.

    http://software-design-development.blogspot.com/

  9. #9
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    218
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 218
    Points : 72
    Points
    72
    Par défaut
    nb de coeurs ca veut dire quoi en anglais ?
    -- Processor: 2GHz, Memory(RAM): 2 GB

    oui c'est dual core Bon j'ajoute que:

    avec un nombre de DTD a peu pres 1000: 2 threads est le nombre le plus performant.

    avec un nombre de DTD a peu pres 10 000: plus de 2 threads est une solution performante..

    je continue a tester

  10. #10
    Membre averti
    Inscrit en
    Décembre 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Décembre 2008
    Messages : 256
    Points : 311
    Points
    311
    Par défaut
    Tu peux utiliser ceci pour renvoyer le nombre de coeurs existant sur la machine courante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Environment.ProcessorCount;
    Il y a toujours au moins deux solutions à un problème.

    http://software-design-development.blogspot.com/

  11. #11
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    218
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 218
    Points : 72
    Points
    72
    Par défaut
    oui c'est 2

Discussions similaires

  1. Tri multi-threadé
    Par Tifauv' dans le forum C
    Réponses: 8
    Dernier message: 28/06/2007, 09h00
  2. récupérer la valeur de sortie d'un thread
    Par jakouz dans le forum Langage
    Réponses: 3
    Dernier message: 31/07/2002, 11h28
  3. Programmer des threads
    Par haypo dans le forum C
    Réponses: 6
    Dernier message: 02/07/2002, 13h53
  4. Réponses: 5
    Dernier message: 12/06/2002, 15h12
  5. [Kylix] Pb de Thread !!
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 25/04/2002, 13h53

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