Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#26

Re: Schnellster Stringmatching-Algorithmus in ASM übersetzen

  Alt 6. Dez 2007, 14:03
Also ich würde alle Index-Operationen durch Zeigeroperationen ersetzen und kein Assembler verwenden.
Das bringt allerdings nur dann etwas, wenn der Inde kontinuierlich ansteigt oder fällt.
Beispiel ("langsam"):
Delphi-Quellcode:
  For c := Low(Char) To High(Char) Do
    Skip[c] := n + 1;
Und so mit Zeigeroperationen:
Delphi-Quellcode:
  pSkip := @Skip[Low(Char)]; // pSkip:PChar
  For c := Low(Char) To High(Char) Do
  begin
    pSkip^ := n + 1;
    Inc(pSkip);
  end;
Der entstehende Code ist dann von der Geschwindigkeit so nahe an einer Assembler Implementierung, dass es sich nicht lohnt Assembler zu verwenden.

Ganz wichtig:
Man benötigt unbedingt ein Testbett, mit dem man min. 10 verschiedene Fälle automatisiert testen kann.
Im Prinzip ein Unit-Test.
Nur so kann man die Funktion Schritt für Schritt verbessern, ohne dass man ständig neue Bugs einbaut.
Andreas
  Mit Zitat antworten Zitat