vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

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

VB.NET - Fortgeschrittene
Dateieinlesen beschleunigen 
Autor: ClipFix
Datum: 27.11.07 16:35

Ich ermittle alle Dateien eines Ordner inkl. aller seiner Unterordner

  Dim Dateien() As String = Directory.GetFiles(Quellordner, "*.*", _
    SearchOption.AllDirectories)
Das Einlesen aller Dateien nimmt ein recht lange Zeit in Anspruch,da der Quellordner hunderte Unterordner und einige tausende Dateien enthält

Aber soweit noch kein Problem

Danach durchlaufe ich eine Schleife und werte Dateilänge und Dateidatum aus

  Dim Variable0815 as string
  for each Datei As String in Dateien
    Variable0815 = filelen(Datei) & filedatetime(Datei)
  next
Jetzt habe ich ein Problem. Das Durchlaufen der Schleife dauert mindestens noch einmal so lange wie das vorhergehende Einlesen, wenn nicht sogar noch länger, weil bei jeder Abfrage die Datei physisch angefasst wird um die gewünschten Daten zu bekommen. Quasi "rödelt die Platte rum", wie man so schön sagt.

Nun bin ich auf folgende Idee gekommen:

  Dim Ordner As New System.IO.DirectoryInfo("Quellordner")
  Dim Dateien As System.IO.FileInfo() = Ordner.GetFiles("*.*", _
    SearchOption.AllDirectories)
  Dim Variable0815 As String
 
  For Each Datei As System.IO.FileInfo In Dateien
    Variable0815 = Datei.Length & Datei.LastWriteTime
  Next
Nun habe ich angenommen, alle gewünschten Daten wären schon beim Einlesen mit im FileInfo-Array gepuffert, leider ist dem nicht so.

Beim Durchlauf der Schleife wird wieder jede Datei einzeln "angefasst".

filelen(Datei) & filedatetime(Datei) im Vergleich zu Datei.Length & Datei.LastWriteTime bringt keinerlei Unterschiede, zumindest was die Performance betrifft.

Erschüttert war ich, als ich mir (irgend)eine Synchronisationssoftware anschaute und das Einlesen des selben Verzeichnisbaums in etwa genauso lange dauerte, jedoch die Auswertung der Daten in Bruchteilen von Sekunden erledigt war.

Mir gefällt eigentlich die kurze prägnante Möglichkeit des rekursiven Einlese von Ordnersturkturen mit VB-Code, aber meine Frage nun, gibt es eine Alternative um die Geschichte zu beschleunigen?
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Dateieinlesen beschleunigen1.595ClipFix27.11.07 16:35
Re: Dateieinlesen beschleunigen842Infinity200227.11.07 17:20
Re: Dateieinlesen beschleunigen754ClipFix27.11.07 18:55
Re: Dateieinlesen beschleunigen817Freggel01.12.07 20:10
Re: Dateieinlesen beschleunigen724ClipFix02.12.07 00:42
Re: Dateieinlesen beschleunigen706Micke04.12.07 18:47
Re: Dateieinlesen beschleunigen733mikeb6901.12.07 20:47

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-2024 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