[Tustep-Liste] Vergleichen von Zeichenfolgen auf Wortebene
Michael Hoffert
tustep_saw_hoffert at mhlkg.de
Mi Jan 29 13:08:44 CET 2020
Kuno Schälkle schrieb am 27.01.20 um 16:22:
>
> SET suchzflg = CONCAT (" ", suchzflg, " ")
> SET zeile = CONCAT (" ", zeile, " ")
> IF (suchzflg .PA. zeile) THEN
Lieber Herr Schälkle,
ihr Denkanstoß ist genial. Ich habe das Beispiel genutzt um gleich mal
ein paar Geschwindigkeitstests zu absolvieren.
Meine Lösung sah so aus:
SET suchzflgA = CONCAT (suchzflg, " ")
SET suchzflgM = CONCAT (" ", suchzflg, " ")
SET suchzflgE = CONCAT (" ", suchzflg)
IF (zeile .SW. suchzflgA ||
suchzflgM .PA. zeile ||
zeile .EW. suchzflgE) THEN
Vorangestellt habe ich ein einfaches
IF (suchzflg .PA. zeile) THEN
um alle Kombinationen auszusortieren, die erkennbar nicht in das Muster
passen.
[TEST ## mal kurz getestet]
Mein Beispieltext erfordert 2757011 Vergleichsoperationen
(Schleifendurchläufen mit mehreren Tests, ohne ngram-Erstellung).
Mein Algorithmus benötigt
449 Sekunden (7 Min : 29 Sek)
Mit zusätzlicher Abfrage .PA. sind es
454 Sekunden (7 Min : 34 Sek)
also bringt die vorherige Abfrage nichts.
Ihr Vorschlag benötigt
453 Sekunden (7 Min : 33 Sek)
[/TEST]
Eigentlich hätte ich erwartet, dass meine Lösung aufgrund der drei
mittels .OR. gekoppelten Überprüfungen mehr Zeit benötigt. Dies scheint
aber nicht so zu sein.
Der minimale Unterschied kann auch thermisch bedingt sein, da je nach
Belastung des Prozessors dieser auf andere Prozessorkerne umschaltet.
Alle drei Vorgehensweisen liegen somit in der Geschwindigkeit auf
ähnlichem Niveau. Welchem man den Vortritt lässt dürfte somit rein
optischer Natur sein.
Vielen Dank an alle für die Mithilfe
Michael Hoffert
Mehr Informationen über die Mailingliste Tustep-Liste