[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