vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Schützen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: Einlesen von Ordnern dauert lange 
Autor: Code_mancer
Datum: 20.05.11 08:38

Servus

ich hab deinen Code mal getestet. Zunächst mal empfehle ich dir, Option Strict On zu benutzen In diesem Fall ist es nur ein Enum, welches du einfach in einen String 'packst' - nicht weiter schlimm... aber sowas kann auch mal daneben gehen.

Desweiteren fliegt das Teil bei mir auf die Nase, sobald er in diverse Systemordner rein geht. Aber soll auch erstmal egal sein, uns geht es ja hierbei um die Geschwindigkeit.

Ich musste daher den Code ein bisschen modifizieren, damit er (zumindest bei mir) einmal sauber durch läuft:

    Public Sub ProcessDirectory(ByVal targetDirectory As String)
        Dim subdirectoryEntries As DirectoryInfo()
        Dim dir As New DirectoryInfo(targetDirectory)
 
        Try
            If (dir.Exists) Then
                subdirectoryEntries = dir.GetDirectories
                ' Diese Prozedur rekursiv aufrufen
 
                For Each subdirectory As DirectoryInfo In subdirectoryEntries
 
                    ListBox1.Items.Add(subdirectory.FullName)
 
                    ProcessDirectory(subdirectory.FullName)
 
                Next subdirectory
            Else
                Dim strBox As String = "Verzeichnis: " & targetDirectory & "" & _
                  "ist" & _
                  "nicht vorhanden!"
                ListBox1.Items.Add(strBox)
            End If
        Catch ex As Exception
            Dim strBox As String = String.Format("Auf Verzeichnis '{0}' kann" & _
              "nicht zugegriffen werden.", targetDirectory)
            ListBox1.Items.Add(strBox)
        End Try
    End Sub
Um bei den Tests ein möglichst genaues Ergebnis zu haben, habe ich den Erstaufruf so gestaltet:

        Dim dateT As DateTime = DateTime.Now
 
        Me.ProcessDirectory("D:\")
 
        ListBox1.Items.Add(String.Format("{0} Einträge.", ListBox1.Items.Count))
        ListBox1.Items.Add(DateTime.Now.Subtract(dateT).ToString())
Mein Ergebnis:
2976 Einträge (Ordner) in ~ 0.641s
16042 Einträge (Ordner) in ~ 3.750s

Also meine Mühle hier kommt auf etwas mehr als 4000 Einträge pro Sekunde. Musste zwischendurch den Code nen bissl anpassen, um das Ding in einem Thread laufen lassen zu können. Dabei habe ich übrigens, in Verbindung mit der ListBox, Zeiten von 49s für 16k Einträge gehabt... Daher Versuch doch mal folgendes:

1) Erstelle dir eine List(of String) in denen du deine Ausgaben erstmal zwischenspeicherst. Erst am Ende der Operation fügst du die komplette Liste deiner ListBox hinzu.

2) Lass die Operation in einem Thread laufen. Somit hast du nur das Auslesen der Ordner und lässt die Form und ihre Freunde erstmal gänzlich außen vor.

Das sollte an der Geschwindigkeit einiges Drehen (von 49s auf 3,7s ist schon ne Hausnummer).

--------------------

Ich habe keine besondere Begabung, sondern bin nur leidenschaftlich neugierig.
- Albert Einstein

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Einlesen von Ordnern dauert lange2.551OttoR20.05.11 00:29
Re: Einlesen von Ordnern dauert lange1.782Code_mancer20.05.11 08:38
Re: Einlesen von Ordnern dauert lange1.612ModeratorDaveS20.05.11 08:57
Re: Einlesen von Ordnern dauert lange1.718Manfred X20.05.11 10:00
Re: Einlesen von Ordnern dauert lange1.724ModeratorDaveS20.05.11 10:52
Re: Einlesen von Ordnern dauert lange1.677Manfred X20.05.11 11:46
Re: Einlesen von Ordnern dauert lange1.614ModeratorDaveS20.05.11 11:54
Re: Einlesen von Ordnern dauert lange1.640Manfred X20.05.11 12:01
Re: Einlesen von Ordnern dauert lange1.653ModeratorDaveS20.05.11 12:16
Re: Einlesen von Ordnern dauert lange1.820Manfred X20.05.11 12:32
Re: Einlesen von Ordnern dauert lange1.666ModeratorDaveS20.05.11 13:00
Re: Einlesen von Ordnern dauert lange1.659Manfred X20.05.11 13:17
Re: Einlesen von Ordnern dauert lange1.627Preisser20.05.11 13:22
Re: Einlesen von Ordnern dauert lange1.834Manfred X20.05.11 13:24
Re: Einlesen von Ordnern dauert lange1.630Code_mancer20.05.11 13:34
Re: Einlesen von Ordnern dauert lange1.707ModeratorDaveS20.05.11 16:51
Re: Einlesen von Ordnern dauert lange1.601Code_mancer23.05.11 08:17
Re: Einlesen von Ordnern dauert lange1.774ModeratorDaveS23.05.11 13:07
Re: Einlesen von Ordnern dauert lange1.672Micke20.05.11 14:04
Re: Einlesen von Ordnern dauert lange1.645OttoR21.05.11 07:03
Re: Einlesen von Ordnern dauert lange1.618Code_mancer23.05.11 08:19
Re: Einlesen von Ordnern dauert lange1.668OttoR24.05.11 15:45
Re: Einlesen von Ordnern dauert lange1.782Manfred X24.05.11 16:21
Re: Einlesen von Ordnern dauert lange1.572Code_mancer24.05.11 17:00
Re: Einlesen von Ordnern dauert lange1.755OttoR24.05.11 17:08
Re: Einlesen von Ordnern dauert lange1.665OttoR31.05.11 08:17
Re: Einlesen von Ordnern dauert lange1.582Bitscheucher01.06.11 09:50
Re: Einlesen von Ordnern dauert lange1.667OttoR01.06.11 22:50
Re: Einlesen von Ordnern dauert lange1.576Code_mancer03.06.11 08:40
Re: Einlesen von Ordnern dauert lange1.620OttoR04.06.11 00:30
Re: Einlesen von Ordnern dauert lange1.637Preisser04.06.11 00:36
Re: Einlesen von Ordnern dauert lange1.604OttoR04.06.11 00:49

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel