AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Suchfunktion Ergebnis der Suchanfrage

Ergebnis der Suchanfrage


Datum des Suchindex: Heute, 00:47

Parameter dieser Suchanfrage:

Suche in Thema: Boyer Moore Algorithmus
Suche alle Beiträge, die von "Horst_" geschrieben wurden
• Suchmethode: "Suche nach allen Begriffen"
• Nach Datum (firstpost) sortiert
• Zeige Treffer als Beiträge
Zeige 10 von insges. 10 Treffern
Suche benötigte 0.001s

Es liegen Ergebnisse in folgenden Bereichen vor:

  • Forum: FreePascal

    AW: Boyer Moore Algorithmus

     
      by Horst_, 9. Jun 2013
    Hallo,

    ich habe die tatsächlich die selben Bedingungen.Ob 4 oder 2 Gb Speicher ist ja hier wohl nicht relevant.
    Es könnte daran liegen, das diese AMD CPU 6 MB Level III Cache hat, aber dies kann nicht soviel ausmachen, schließlich durchsuchst Du in 103 ms einen nicht vorhandenen String und ich brauche 69 ms, bei doppelter CPU-frequenz.
    Müßig darüber nachzudenken, Du hast ja noch etwas...
  • Forum: FreePascal

    AW: Boyer Moore Algorithmus

     
      by Horst_, 9. Jun 2013
    Hallo,

    ich bin erstaunt über die großen Unterschiede zwischen meinem AMD Phenom II X4 955 3.2Ghz
    // etwas umgestellt zum besseren Vergleich
    //50 Durchläufe
    " Taxi" // Ein häufiger Buchstabe vorne
    BMH Count: 100000 in 284ms <--- 1091 Mb/s
    SP Search Count: 100000 in 544ms
    Asm AmatProfi : 100000 in 819ms
    himitsu Count: 100000 in 745ms
  • Forum: FreePascal

    AW: Boyer Moore Algorithmus

     
      by Horst_, 9. Jun 2013
    Hallo,

    ich habe mal himitsu's Version geändert, welche bei mir nicht übel abschneidet.

    function CountString(const S, SubStr: string): integer; assembler;
    // Leicht geändert, zählt nicht nur bis 65536
    // Siehe www.delphipraxis.net/51284-teil-string-anderem-string-suchen-zaehlen.html
    asm
    PUSH ESI
    PUSH EDI
  • Forum: FreePascal

    AW: Boyer Moore Algorithmus

     
      by Horst_, 8. Jun 2013
    Hallo,

    @Amateurprofi:
    Du hat Deine CPU aber noch nicht die Frequenz hochgeschraubt..
    Wenn ich nur Test aufrufe, kommt 6684 / 6660 raus->delta = 24
    Wenn ich in Test nach der Festlegung auf CPU1 eine rechneintensive Schleife einbaue ~1 Sekunde dann habe 1700/1694-> delta= 6 ( recht genau 3.2/0.8
    Hier gibt es auch schon eine Variante mit REPNE SCASB...
  • Forum: FreePascal

    AW: Boyer Moore Algorithmus

     
      by Horst_, 8. Jun 2013
    Hallo,

    die Asm Version hat ja einfach die Paramter vertauscht
    SearchIn Searchfor und Suchtext,SuchWort... -> muss ja 0 werden.
    Also EAX und EDX im zu Beginn ander sbehandeln, wieso habe ich nicht einfach ein
    XCHG EAX,EDX davorgesetet....:-(

    Ich würde in der ASM Version mal an repne scasb //scasw in Betracht ziehen.
    Bei Jaenicke's Version...
  • Forum: FreePascal

    AW: Boyer Moore Algorithmus

     
      by Horst_, 7. Jun 2013
    Hallo,

    Hallo,


    Also Count, welches nur einmal aufgerufen wird, existiert immer noch und ist ja auch schneller.
    Ich habe auch schon mal vor x Jahren einen Ansatz gehabt, viele Dateien nach vielen Wörtern zu durchsuchen.Dabei wurden, wie im ersten Ansatz von Ginko, Blöcke von 4 Kb eingelesen mit Platz für das längste Wort davor, damit Blockread immer auf die selbe Stelle in selber Größe...
  • Forum: FreePascal

    AW: Boyer Moore Algorithmus

     
      by Horst_, 6. Jun 2013
    Hallo,

    ich habe weiter oben die Vorbereitungsphase in einen Record ausgelagert, weil mir das sehr unsinnig erschien, das ständig neu zu erstellen.
    Ich habe Ginko Version 4 mal etwas umgestellt.
    Wobei Count seiner Version entspricht, Count_II meiner vorherigen, bei der der vorbereitete Record für das Suchwort BMH mit Offset wiederholt aufruft, falls man eine Liste aufbauen oder etwas sofort...
  • Forum: FreePascal

    AW: Boyer Moore Algorithmus

     
      by Horst_, 6. Jun 2013
    Hallo,

    ich habe es BMH in die Unit gepackt, weil es ständig Unsinn gab.
    Jetzt funktioniert es fürs Erste:
    Edit, aber Obacht, ich lese die Textdatei bringe sie auf eine vorgegebene Länge.
    function TForm1.TextEinlesen(Filname: string): string;
    Diese nichts mit der Satzlänge der Textdatei zu tun hat.Bei Textlänge=100000, wird eine 82 Zeilen Zeile eben 1219 fach und 42 Zeichen kopiert.Deshalb...
  • Forum: FreePascal

    AW: Boyer Moore Algorithmus

     
      by Horst_, 5. Jun 2013
    Hallo,

    nur mal als Hinweis, wie schnell PosEx ist
    Ich habe diese Zeile:
    "Point Line Square Point Point Triangle Line PointPoint Line Square PointPoint>>"

    So oft hintereinanderkopiert, bis 1Gb belegt waren.Das schafft kein PC-CPU-Cache.
    "Gesamttextlaenge 1.000.000.000"
    Die Standardsuche nach 87.500.000 "Point" dauerte knapp 2,8 Sekunden
    Die Standardsuche nach 12.500.000 "Triangle"...
  • Forum: FreePascal

    AW: Boyer Moore Algorithmus

     
      by Horst_, 5. Jun 2013
    Hallo,

    Furtbichlers Vorschlag ist doch insofern sinnig, dass man von einer Festplatte die Daten bestimmt nicht so schnell lesen kann, wie PosEx(wort,text) oder strPos(pAnsiChar(aBuffer), wort) { -> Puffer um 1 vergrößern und dort eine #0 reinschreiben} die Sachen finden.
    Wie ist denn die minimale Wortlänge, ab der Boyer Moore überhaupt Sinn macht?

    Gruß Horst


URL zu dieser Suchanfrage:

https://www.delphipraxis.net/dp_search.php?do=usersearch&search_username=Horst_&search_exact_username=1&search_sortby=dateline&search_resulttype=post&search_matchmode=0&searchthreadid=175187
Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:05 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