Schnelle Dateisuche

04/01/2011 - 17:54 von adi | Report spam
Hallo! Ich habe in einem bestimmten Verzeichnis auf der Festplatte
folgende Unterstruktur: Datum (nur Jahr) und darunter mehrere
Verzeichnisse. Jedes dieser Verzeichnisse tràgt einen Menschennamen +
eine zusàtzliche Nummer (so dass es für einen Menschen mehrere
Verzeichnisse geben kann). In jedem der Verzeichnisse befinden sich
mehrere Dateien, die sich auf den Menschen beziehen. Es kann sich bei
den Verzeichnissen (Menschen) um mehrere Tausend handeln. Jetzt würde
ich gerne mit Hilfe eines geeigneten Dialoges nach einem bestimmten
Namen suchen (über mehrere Jahrgànge). Bereits beim tippen des Namens
hàtte ich gerne eine entsprechende Liste generiert. Wie ereiche ich so
etwas am besten? Einfach alle Eintràge (GetDirectory) auslesen? Oder
linq beutzen? Wie kann ich möglichst schnell suchen?
Danke für die Hilfe!
 

Lesen sie die antworten

#1 Thomas Scheidegger
04/01/2011 - 18:53 | Warnen spam
?Hallo adi

Einfach alle Eintràge (GetDirectory) auslesen? Oder linq
Wie kann ich möglichst schnell suchen?



alle .NET Methoden wie GetDirectories
http://msdn.microsoft.com/de-de/lib...43314.aspx

suchen
(ggf halt mit den typischen Suchmustern Meier* usw)
intern praktisch 1:1 direkt über die Win32 APIs.
Da bestimmt also fast ausschliesslich Win32
und jede individuelle Windows-Installation
(über NTFS-Filesystem, Bus, Festplatte, allgem. Systemleistung)
die Performance, da kann man in .NET kaum mehr 'optimieren'.
LINQ mag zwar ggf weniger Code zu schreiben sein,
ist intern aber nochmals ein wenig mehr Overhead.

Ich vermute hier eher Ansàtze mit (vorgàngigem)
Caching/Indexing und dies uU gar in sepratem/mehreren Threads parallel
(wobei Disk-IO halt gar nicht sonderlich gut parallelisiert)

Insbesondere wàre in deinem Szenario ganz zu Beginn
(Dialog erscheint ... erste Taste wird gedrückt)
eine sehr starke Verzögerung zu befürchten.
Da wirst du wohl schon vorgàngig (bald zb nach Programmstart) im Hintergund
schon
beginnen müssen, die Verzeichnisstruktur zu 'cachen',
damit Benutzer im Dialog dann schnellere Reaktionszeiten bekommt.
Falls sich deine Verzeichnisstruktur von Tag zu Tag nur wenig àndert,
könntest du diese Info ('Index') ggf auch zwischenspeichern,
damit bei nàchstem Programmstart bereits viele Vorschlàge verfügbar sind.

PS,
seitens MS ist diese NG nicht mehr unterstützt, jedoch Forum
http://social.msdn.microsoft.com/Fo...lcsharpde/



Thomas Scheidegger - 'NETMaster'
http://dnetmaster.net/

Ähnliche fragen