Keine Ahnung, wo du deine Zahlen hernimmst:
Code:
10 Mio Zeichen (zufällige Klein-, Großbuchstaben und Ziffern); 100 Durchläufe
SubStr-Position Ums. Ticks "Takte"
nicht enthalten: Sirius 1641 5904826
nicht enthalten: Alzaim 1672 5983740
nicht enthalten: AmProf 1578 5624764
am Ende: Sirius 1516 5419565
am Ende: Alzaim 1531 5478115
am Ende: AmProf 1531 5523135
04 Zeichen kurz vorm Ende: Sirius 2000 7174492
04 Zeichen kurz vorm Ende: Alzaim 2063 7363324
04 Zeichen kurz vorm Ende: AmProf 1907 6784691
10 Zeichen kurz vorm Ende: Sirius 1656 5965412
10 Zeichen kurz vorm Ende: Alzaim 1703 6070397
10 Zeichen kurz vorm Ende: AmProf 1594 5729845
30 Zeichen kurz vorm Ende: Sirius 1500 5365152
30 Zeichen kurz vorm Ende: Alzaim 1547 5497721
30 Zeichen kurz vorm Ende: AmProf 1469 5270731
(Bei "nicht enthalten" und "am Ende" ist das Erste Zeichen des subst. nicht im eigentlichen SuchText enthalten)
Hier ist dein Algorithmus auch kaum bei kurzen Suchstrings besser. Aber wie gesagt, es ging ja nicht um kurze SuchStrings und auch nicht darum, alle Algortihmen in einer Assemblerroutine unterzubringen. Das du jetzt vielleicht noch 1% herausgeholt hast, mag ja sein. Wobei das 1% bezogen ist auf meinen bzw. Alzis Umsetzung. Beziehe die Differenz mal auf das ursprüngliche Delphi-Pos!
In meinem Beitrag #32 beziehe ich mich eben darauf, dass bis auf wenige Takte (was ich nicht explizit schrieb),
aus diesem Algorithmus nichts mehr rauszuholen ist. Außer dass man ein paar Sprünge entfernt und dies und das (ich war auch noch nicht vollständig am Ende), wobei ich die Suche dann abgebrochen habe...(meine Pausen sind ja auch nicht ewig lang) denn eine Verbesserung um den Faktor 2 bis Inf (was meiner Meinung nach alzis Erwartungen entsprach) war nicht mehr möglich zu erreichen, nicht mal annähernd.
Aber du kannst ja gerne deine Routine weiter verfeinern und hier zur Verfügung stellen
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.