![]() |
Schnellere Alternative zu PosEx ?
Grüsseuch!
Ich hab' eine allgemeine (also nicht nur TextZeichen wie PosEx) MusterSuche geschrieben, welche PosEx um Längen schlägt. Ich hab' versucht, schnelle Implementationen für Alternativen zu finden, aber irgendwie kommt dabei nichts Gutes heraus. Ich hab' Libraries gesucht, welche es mir ermöglichen, anständige Benchmarks zu erstellen, damit ich Vergleiche hab' ... aber ohne Erfolg. In FPC gibt es eine, oder mehrere?, Implementation eines Such-Algorithmus, wie zB. FindMatchesBoyerMooreCaseSensitive, aber die ist noch viel langsamer als PosEx. Ich weiß leider nicht, wie ich mir diesbezüglich selbst helfen kann. Die letzte Möglichkeit, scheint zu sein, dass ich C installieren muss, damit ich Such-Algorithmen von GitHub zum Vergleich benutzen kann, aber da ich kein C kann und mich nicht mit den potentiellen Problemen konfrontieren möchte, ist das nur eine letzte Option. Kann mich da jemand in die richtige Richtung lenken? Danke! |
AW: Schnellere Alternative zu PosEx ?
|
AW: Schnellere Alternative zu PosEx ?
Zitat:
In Delphi gibt es auch noch ![]() ![]() |
AW: Schnellere Alternative zu PosEx ?
Zitat:
Zitat:
Inwiefern vergleiche ich Äpfel mit Birnen? Es ist nicht *viel* langsamer als PosEx, aber so weit ich die Messungen in Erinnerung hab', kam's doch vor. Ich sitz' schon zu lange an dem Ganzen. |
AW: Schnellere Alternative zu PosEx ?
Zitat:
Das Beispiel Programm zum Suchen eines Strings hab' ich jetzt ausprobiert. Viel zu langsam, was aber scheinbar eh zu erwarten war, da das Teil ja hochkomplex zu sein scheint. Oder ich mach was falsch. Mal sehen. Nein, ist korrekt. Trotzdem danke! |
AW: Schnellere Alternative zu PosEx ?
Ups, mir war so, dass dieses Boyer-Moore eine "Ähnlichkeitssuche" war,
ähnlich zu Soundex, Levenshtein, Jaccard oder Metaphone. RegEx ist eine (noch aufwändigere aber hoch optimierte) Mustersuche. Und Pos sowie PosEx ist eine Binärsuche. OK, rein vom Ergebnis sind Boyer-Moore und Pos/PosEx (wobei ich glaube Delphi hat seit über 10 Jahren die PosEx vom FastStrings-Projekt übernommen) "gleich". Aber bei kurzen Texten wird der "Aufwand" für die Such-Optimierung im Boyer-Moore wesentlich mehr Rechenleistung/Zeit verbraten, als die eigentliche Suche, womit es dann dem "dummen" PosEx unterlegen ist. (außer bei sehr langen/großen Texten) |
AW: Schnellere Alternative zu PosEx ?
Um evtl. auch brauchbare Antworten geben zu können:
1. Suchst Du für Delphi oder FPC? 2. Welche Art von Muster magst Du unterstützen (einfach wir * und ?, oder eine LIKE-Implementation, oder komplexe Dinge wie RegEx)? Zitat:
Im Allgemeinen werden Mustersuchen immer langsamer sein, als eine einfache Pos(Ex) Suche. Für längere Suchstrings ließe sich PosEx sicherlich optimieren. Siehe auch FastStrings. ...:cat:... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:41 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