AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Schnellere Substring-Suche als Pos?

Ein Thema von mquadrat · begonnen am 23. Jun 2008 · letzter Beitrag vom 23. Jun 2008
Antwort Antwort
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#1

Schnellere Substring-Suche als Pos?

  Alt 23. Jun 2008, 14:24
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?
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Schnellere Substring-Suche als Pos?

  Alt 23. Jun 2008, 14:26
Schau mal da
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von Gausi
Gausi

Registriert seit: 17. Jul 2005
877 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Schnellere Substring-Suche als Pos?

  Alt 23. Jun 2008, 14:37
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.
The angels have the phone box.
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#4

Re: Schnellere Substring-Suche als Pos?

  Alt 23. Jun 2008, 14:43
@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
  Mit Zitat antworten Zitat
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#5

Re: Schnellere Substring-Suche als Pos?

  Alt 23. Jun 2008, 14:58
Vielleicht hilft dir http://www.fastcodeproject.org/ das weiter
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#6

Re: Schnellere Substring-Suche als Pos?

  Alt 23. Jun 2008, 15:01
@Ghostwalker

Ist schon drin
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz