Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Schnellere Substring-Suche als Pos? (https://www.delphipraxis.net/116097-schnellere-substring-suche-als-pos.html)

mquadrat 23. Jun 2008 13:24


Schnellere Substring-Suche als Pos?
 
Hallo zusammen,


ich lese relativ große XML Files (~3MB) ein und zeige die Einträge anschließend in einem Grid an. Um den Überblick nicht zu verlieren gibt es Farbfilter, die auf Substring-Suchen berufen. Beispiel: Enthält ein Eintrag den Text "MID" wird er hellblau, enthält er den Text "INI" wird er grün.

Derzeit realisiere ich das, in dem ich jeden Eintrag durch diverse if (Pos(....)) else if (Pos(....)) laufen lasse. Das funktioniert zwar, aber ein bisschen Geschwindikeit hat ja noch nie geschadet ;) Daher die Frage: Wie kann man sowas optimieren?

sirius 23. Jun 2008 13:26

Re: Schnellere Substring-Suche als Pos?
 
Schau mal da

Gausi 23. Jun 2008 13:37

Re: Schnellere Substring-Suche als Pos?
 
Wenn es darum geht, mehrere Strings auf einmal zu suchen, dann könnte auch dieser Beitrag was für dich sein. Solche Multi-Search-Algorithmen können sich ab ungefähr einem Dutzend zu suchender Muster lohnen. Die Vorbereitungsphase (Aufbau der Hashlisten etc.) sollte man in deinem Fall natürlich nur einmal ausführen, nicht bei jedem Eintrag aufs Neue.

mquadrat 23. Jun 2008 13:43

Re: Schnellere Substring-Suche als Pos?
 
@Sirius

Üblicherweise sind die gesuchten Substrings bei mir < 10 Zeichen und die Strings in denen gesucht wird max. 150 Zeichen lang. Insofern werd ich wohl erstmal beim FCC Pos bleiben.

@Gausi

Das wird mir wohl nicht viel nützen (auch wenn ich nochmal genauer drüber lesen muss). Ich habe keinen kompletten String, den ich durchsuchen könnte, sondern mehrere Tausend kleine Strings. Es handelt sicht um ein XML File, dass ich schon geparst bearbeite. Wenn ich die Datei raw durchsuche müsste ich wieder schauen wo das dann im Grid vorkommt um die Farbe festzulegen. Der Aufwand würde den Vorteil beim Durchsuchen wohl wieder egalisieren.

@Thema

Bei einer Testdatei mit knapp 8400 Einträgen, dauert das Lesen und Parsen der Datei, Vergleichen mit den Mustern (je 2x Pos) und Anzeigen des Grids vier Sekunden. Das ist ja nicht allzuschlecht

Ghostwalker 23. Jun 2008 13:58

Re: Schnellere Substring-Suche als Pos?
 
Vielleicht hilft dir http://www.fastcodeproject.org/ das weiter :)

mquadrat 23. Jun 2008 14:01

Re: Schnellere Substring-Suche als Pos?
 
@Ghostwalker

Ist schon drin ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:00 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz