Optimisation du code de lecture de fichiers et dossiers
Bonsoir à tous,
J'aimerais améliorer la vitesse d’exécution de mon code mais je ne sais pas comment faire. Celui-ci lit environ 60000 dossiers et 600 fichiers,
les noms de dossiers sont stockés dans 2 listes 'CarSetupsListe' et 'TracksSetupListe', les fichiers sont stockés dans 'Setups'.
Ça prends environ 10s sur mon PC portable et bien que s’exécutant en tache de fond, cela ne rends pas l'interface disponible tout de suite pour cette partie du programme.
Les dossiers à lire sont organisés de cette façon :
Car1/Track1/xxxxxx.ini
Car1/Track2/xxxxxx.ini
....
Car2/Track1/xxxxxx.ini
Car2/Track2/xxxxxx.ini
....
J’espère que vous pourrez m'aider car je ne vois vraiment pas comment faire....
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| Private Sub LoadDataSetups()
Setups.Clear()
CarsSetupsListe.Clear()
TracksSetupsListe.Clear()
' Chargement de la liste des Voitures et Circuits dans les listes :
Dim countCarFolder As Integer
Dim TotaleSetupsFolder As Integer = Directory.GetDirectories(Options.AC_Doc_Directory & "\setups").Length
For Each CarFolder As String In Directory.GetDirectories(Options.AC_Doc_Directory & "\setups")
countCarFolder += 1
Dim CarName As String = Path.GetFileName(CarFolder)
If Not CarsSetupsListe.Contains(CarName) Then
CarsSetupsListe.Add(CarName)
End If
For Each TrackFolder As String In Directory.GetDirectories(CarFolder)
Dim TrackName As String = Path.GetFileName(TrackFolder)
If Not TracksSetupsListe.Contains(TrackName) Then
TracksSetupsListe.Add(TrackName)
End If
For Each FileSetup As String In Directory.GetFiles(TrackFolder)
Dim Fi As New FileInfo(FileSetup)
If Fi.Extension.ToLower = ".ini" Then
Setups.Add(FileSetup, New Setup(FileSetup, CarName, TrackName))
End If
Next
Next
Dim Progress As Integer = CInt(100 * countCarFolder / TotaleSetupsFolder)
bgwLoadSetups.ReportProgress(Progress, String.Format("Chargement des Setups ({0}%)", Progress))
Next
CarsSetupsListe.Sort()
TracksSetupsListe.Sort()
End Sub |