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 :

[VB2005]Code lent à l'exécution


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 247
    Par défaut [VB2005]Code lent à l'exécution
    Bonjour,
    J'ai une petite appli en VB qui se charge de lire un répertoire et ses sous-répertoires mais ce code est très lent quand il y a beaucoup de fichiers (il devient de plus en plus lent au fur et a meseru de la lecture des fichiers).

    Pour ce code , je me suis inspiré de celui dans la FAQ .NET

    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Dim i As Integer
    i = 1
    Traitement.LblMessage.Text = "Lecture des trains d'origine"
    Traitement.Show()
    Traitement.Refresh()
    For Each file As String In Directory.GetFiles(CheminMSTS + "\Trains", "*.*", System.IO.SearchOption.AllDirectories)
       ReDim Preserve FichiersDepart(i)
       FichiersDepart(i - 1) = file.ToLower
       i = i + 1
       DoEvents()
    Next

    Ce code n'a pas l'air très performant
    Y'a-t-il une meilleure méthode (je débute totalement en .Net) ??

  2. #2
    Membre expérimenté Avatar de fred777888999
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    250
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 250
    Par défaut
    Rien de bien etonnant a ce que ton code rame. Ton tableau est alloue et deplace en memoire a chaque tour de boucle (rien a voir avec le .net sois-dit en passant, c'est un probleme d'algo).
    Une optimisation simple pourrait etre d'allouer par bloc de 1000 comme suit :

    Code VB.Net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    Dim i As Integer
    Dim nbAllocations as Integer
    nbAllocations = 1000
    i = 1
    Traitement.LblMessage.Text = "Lecture des trains d'origine"
    Traitement.Show()
    Traitement.Refresh()
    Dim Preserve FichiersDepart(nbAllocations)
    For Each file As String In Directory.GetFiles(CheminMSTS + "\Trains", "*.*", System.IO.SearchOption.AllDirectories)
       if ( i > nbAllocations ) then
         nbAllocations = nbAllocations + 1000
         ReDim Preserve FichiersDepart(nbAllocations)
       end if
       FichiersDepart(i - 1) = file.ToLower
       i = i + 1
       DoEvents()
    Next
    ReDim Preserve FichiersDepart(i-1)

    A tester et debugger, je n'ai pas de possibilite de faire du vb sur ce poste.
    ++
    Fred.

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 247
    Par défaut
    Merci, je vais tester ca

Discussions similaires

  1. outlook lent pour excuter!
    Par starsat4200 dans le forum Outlook
    Réponses: 1
    Dernier message: 08/06/2007, 09h05
  2. Réponses: 6
    Dernier message: 30/04/2007, 10h07
  3. Aidez moi à avoir un programme lent en exécution
    Par bejaouijamil dans le forum C
    Réponses: 8
    Dernier message: 26/12/2006, 21h01
  4. code lent ??
    Par difficiledetrouver1pseudo dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 12/02/2006, 11h47

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