Autor Beitrag
Bulli
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Do 13.02.03 12:24 
Hi all,
ich habe ein Problem. Und zwar hab ich ein Programm geschrieben (Ein Server und einen Client um genau zu sein), das ein Abbild meiner Platte in eine Stringlist speichert. Wenn nun eine Suchanfrage vom Server kommt wird diese Stringlist nach einem bestimmten Teilstring abgesucht.
Da es sich um mehr als 100.000 Stringeinträge handelt kann man sich vorstellen dauert dies ein wenig und dieser Zeit ist der Client eingefroren, man kann also nicht mehr aktiv agieren. Nun meine frage:
Wie kann man es verhindern das der Client einfriert? Die Indy Komponenete Anti-Freeze ist ja nur für Indy Kompos gedacht.

Wäre dankbar für jede Idee.


Gruß
Bulli
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 13.02.03 12:27 
Einfachste Antwort: Benutzt die Indys. :mrgreen:

Oder lagere die Abfrage- und Suchaktion in eine separaten Thread aus.
Bulli Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Do 13.02.03 14:00 
Danke,
ich werde mal gucken ob das nem extra thread funzt.

Bin trotzdem dankbar für weitere Ideen!

greetz
Bulli
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Do 13.02.03 14:41 
Hi!

Zur Stringsuche:

Ist der Teilstring immer am Anfang? Wenn ja, ist das von entscheidender Bedeutung für die Geschwindigkeit! Dann könntest du nämlich, anstatt jeden String einzeln durchzugehen, einen Algorithmus wie das iterierte Halbieren anwenden, um den String zu lokalisieren, was bei 100.000 Strings gerade mal höchstens 17 Zugriffe benötigen würde. Im Gegensatz zum Worst Case 100.000 Zugriffe ist das der Faktor 5882... :wink:

Zum Client:

Siehe Luckies Kommentar... :wink:

Cu,
Udontknow
Bulli Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Do 13.02.03 15:21 
Hi,
der Suchstring ist leider nicht immer am Anfang.
Beispiel:
Suchstring "WinNT"
Stringlisteintrag:
"c:\Programme\Microsoft\WinNT"


greetz
Bulli